<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type">
  <title>Dead Souls Admin FAQ</title>
  <link rel="icon" href="./favicon.ico" type="image/x-icon">
  <link rel="shortcut icon" href="./favicon.ico" type="image/x-icon">
</head>
<body>
<big style="font-family: courier new,courier,monospace;"><big><span
 style="font-weight: bold;">Dead Souls Admin FAQ</span></big><br>
<br>
Written by Cratylus @ Dead Souls, October 2005<br>
Updated August 2008<br>
<span style="font-weight: bold; text-decoration: underline;"><br>
</span>Note: commands are displayed in boldface, like this: <span
 style="font-weight: bold;">ls -a</span><span
 style="font-weight: bold; text-decoration: underline;"><br>
<br>
What's this FAQ about?</span><br>
<br>
The point of this document is to orient a new admin in<br>
Dead Souls 2. Starting a MUD with a lib that is completely new to<br>
you can be confusing and discouraging. Hopefully this FAQ will<br>
make the experience less difficult.<br>
<br>
<br>
<a href="#0">0 How do I start?</a><br>
<br>
<a href="#1">1 Is there a MUD somewhere running Dead Souls I can log
into?</a><br>
<br>
<a href="#2">2 I like Dead Souls and I want to use it, but I don't want
to run a mud.</a><br>
<br>
<a href="#3">3 I want to invite my friends to help me code. How do I
promote </a><br>
<a href="#3">them to creator status?<br>
</a><br>
<a href="#4">4 What about intermud? How do I talk on that?</a><br>
<br>
<a href="#5">5 I talk on intermud but nobody replies. What's up with
that?</a><br>
<br>
<a href="#6">6 How did you know my mud started up?</a><br>
<br>
<a href="#7">7 I heard there's an I3 router included in Dead Souls.<br>
</a><br>
<a href="#8">8 What's this about a manual on Frontiers?</a><br>
<br>
<a href="#9">9 How do I add limbs to a race?</a><br>
<br>
<a href="#10">10 How do I add a race?</a><br>
<br>
<a href="#11">11 How do I make my friend an admin?<br>
</a><br>
<a href="#12">12 I don't like how the who command output looks! You
should change it.<br>
</a><br>
<a href="#13">13 Can you please make the FAQ easier to read? It's too
long and complicated.<br>
</a><br>
<a href="#14">14 Most of the file headers have only Descartes's name on
them. </a><br>
<a href="#14">Did you really develop this lib or did he?<br>
</a><br>
<a href="#15">15 How can I change the colors of the channel messages?<br>
</a><br>
<a href="#16">16 How do I know what other muds use Dead Souls?</a><br>
<br>
<a href="#17">17 I was hanging out in the Arch room and the loudspeaker
went off. WTF?</a><br>
<br>
<a href="#18">18 I want to test the intermud channel but I don't want
to spam the ds line.</a><br>
<br>
<a href="#19">19 What's this "Network room"?</a><br>
<br>
<a href="#20">20 The web server and FTP server don't work</a><br>
<br>
<a href="#21">21 I tried to log in to the FTP server but I can't!</a><br>
<br>
<a href="#22">22 I can't do anything with FTP. It just hangs there.<br>
</a><br>
<a href="#23">23 The web server gives me a 404 but I know the directory
is there.</a><br>
<br>
<a href="#24">24 I'm using an external FTP server, but the files I
transfer </a><br>
<a href="#24">become read only!</a><br>
<br>
<a href="#25">25 I moved a command from one directory to another. How
do I </a><br>
<a href="#25">get the new location recognized?<br>
</a><br>
<a href="#26">26 The mudtime is all wrong!</a><br>
<br>
<a href="#27">27 The time of day is all wrong!</a><br>
<br>
<a href="#28">28 What happened to the roommaker and thingmaker?<br>
</a><br>
<a href="#29">29 I keep getting 'Connection to address server
(localhost 9999) refused.' <br>
</a><br>
<a href="#30">30 Can I charge players a fee for playing on my mud?</a><br>
<br>
<a href="#31">31 Can people donate money to me for the mud?</a><br>
<br>
<a href="#32">32 I found a bug. For real. Can you please fix it?<br>
</a><br>
<a href="#33">33 Where would I edit to change how long someone can be
idle </a><br>
<a href="#33">before they get disconnected?<br>
</a><br>
<a href="#34">34 How do I permit all users who log in to become </a><br>
<a href="#34">creators automatically?<br>
</a><br>
<a href="#35">35 How do I limit the use of intermud channels?</a><br>
<br>
<a href="#36">36 How do I get off intermud completely?</a><br>
<br>
<a href="#37">37 How do I change the start room for the mud?</a><br>
<br>
<a href="#38">38 I don't like having newbies get special treatment.</a><br>
<br>
<a href="#39">39 I don't want players to be able to pick non-human
races.<br>
</a><br>
<a href="#40">40 I want everyone to speak the same language.<br>
</a><br>
<a href="#41">41 I made a change to /lib/player.c and updated it, but
I'm not </a><br>
<a href="#41">seeing a difference in my character.<br>
</a><br>
<a href="#42">42 How do I change the items new players receive?<br>
</a><br>
<a href="#43">43 Hey, there's no &lt;foo&gt; class! What's up with that?<br>
</a><br>
<a href="#44">44 Where can I get a Dead Souls mud hosted?<br>
</a><br>
<a href="#45">45 Your LIB_MXLPLX system is all screwy. I changed it and
it </a><br>
<a href="#45">works. Wanna see?<br>
</a><br>
<a href="#46">46 How are files organized in Dead Souls?<br>
</a><br>
<a href="#47">47 What are sefuns and efuns?</a><br>
<br>
<a href="#48">48 Whew! Ok now I know where stuff is. What's next?<br>
</a><br>
<a href="#49">49 Oh, man, you're kidding! Those are, like, books! Can't
I </a><br>
<a href="#49">just start making stuff?<br>
</a><br>
<a href="#50">50 Everything is su-u-u-u-p-e-e-r-r-r s-s-l-o-o-o-o-w-w-w<br>
</a><br>
<a href="#51">51 Dude! One of my creators just kicked me off my own mud!<br>
</a><br>
<a href="#52">52 Is Dead Souls secure?</a><br>
<br>
<a href="#53">53 I sent you my code a week ago. Is it in or out?<br>
</a><br>
<a href="#54">54 Did you finish the bfd() sefun modification I asked
you for last night?<br>
</a><br>
<a href="#55">55 QUEEG_D is a horrendous mess. It's inefficient and
frankly offensive.<br>
</a><br>
<a href="#56">56 You implemented my code but didn't give me credit.</a><br>
<br>
<a href="#57">57 Intermud mail doesn't work</a><br>
<br>
<a href="#58">58 The admintool menus let you pick options that aren't
visible</a><br>
<br>
<a href="#59">59 What does locking the mud do, exactly?<br>
</a><br>
<a href="#60">60 The race help output is inadequate for role-playing.
How do I change it?<br>
</a><br>
<a href="#61">61 I need to know what features to expect in the next
release so </a><br>
<a href="#61">I don't waste time duplicating effort<br>
</a><br>
<a href="#62">62 You need a development roadmap and task tracking<br>
</a><br>
<a href="#63">63 How do I update a sefun without rebooting the mud?<br>
</a><br>
<a href="#64">64 My new sefun updates but I can't seem to use it.<br>
</a><br>
<a href="#65">65 What's the point of the apostrophe-stripping for args
in lib/command.c?<br>
</a><br>
<a href="#66">66 How does one achieve 'high mortal' or 'ambassador'
positions?<br>
</a><br>
<a href="#67">67 I would like XYZ and PDQ to happen every time the mud
boots<br>
</a><br>
<a href="#68">68 I can't login! I keep getting: "It seems some work is
being done </a><br>
<a href="#68">right now, try later."<br>
</a><br>
<a href="#69">69 I had a really great idea that revolutionizes ds and
you refuse </a><br>
<a href="#69">to include it. I am forking ds development and making my
dream come true.<br>
</a><br>
<a href="#70">70 What do the version numbers mean?</a><br>
<br>
<a href="#71">71 The Dead Souls router is down.</a><br>
<br>
<a href="#72">72 I'm going to totally revamp &lt;insert highly complex
system here&gt;.<br>
Will that be difficult?</a><br>
<br>
<a href="#73">73 I've hired an area coder to make a new domain. I want
her<br>
to be able to use QCS in /domains/MistyDragonShireMysts.</a><br>
<br>
<a href="#74">74 How does player voting work?</a><br>
<br>
<a href="#75">75 What are "estates"?</a><br>
<a href="#76"><br>
</a></big><big style="font-family: courier new,courier,monospace;"><a
 href="#76">76 What are "events"?</a><br>
<br>
<a href="#77">77 Where does user monitor data go?</a><br>
<br>
<a href="#78">78 How would you set a race to be selectable by new
players?</a><br>
<br>
<a href="#79">79 Where is emote data kept?</a><br>
<br>
<a href="#80">80 What are .h and .o files? Where are they kept?</a><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<a href="#81">81 But my friend forgot his password! I *have* to edit
his playerfile!</a><br>
<br>
<a href="#82">82 How do I change my mud's name?</a><br>
<br>
<a href="#83">83 Help! I locked myself out!</a><br>
<br>
<a href="#84">84 What are the privileges associated with the groups in
groups.cfg?</a></big><br
 style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;"><br>
<a href="#85">85 Why does the documentation refer to LIB_ARMOUR and
armour_types.h?</a><br>
<br>
<a href="#86">86 Where are read/write restrictions kept?</a><br>
<br>
<a href="#87">87 I need to test day/night descriptions, but I can't
wait around all day.</a><br>
<br>
<a href="#88">88 How can I change the default prompt? Can I make it
dynamic?</a><br>
<br>
<a href="#89">89 What is "unguarded"?</a><br>
<br>
<a href="#90">90 Is intermud communication secure?</a><br>
<br>
<a href="#91">91 What are some do's and don'ts<span
 style="font-weight: bold; font-style: italic;"></span>?</a><br>
<a href="#93"><br>
</a></big><a style="font-family: courier new,courier,monospace;"
 href="#92"><big>92 Is DS2 in any way suited to create a non-english
mud from/with it?</big></a><br
 style="font-family: courier new,courier,monospace;">
<a style="font-family: courier new,courier,monospace;" href="#93"><br>
<big>93 I keep losing my intermud connection, and sometimes I'm half
connected</big></a><br
 style="font-family: courier new,courier,monospace;">
<br style="font-family: courier new,courier,monospace;">
<a style="font-family: courier new,courier,monospace;" href="#94">94 I
heard I can run my old TMI-2/Nightmare 3/Skylib/Lima code on Dead
Souls. Is that true?</a><br
 style="font-family: courier new,courier,monospace;">
<br style="font-family: courier new,courier,monospace;">
<a style="font-family: courier new,courier,monospace;" href="#95">95
Why is the version of Dead Souls 2 on Sourceforge different from the
one on dead-souls.net?</a><br
 style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;"><br>
<a href="#96">96 Good heavens! All I wanted to do was change combat,
and it is so complicated!</a><br>
<br>
<a href="#97">97 Editing in Windows is fine and call_out()'s are great.
Your advice sucks!</a><br>
<br>
<a href="#98">98 I keep hearing that Dead Souls can do this or that,
but I'm trying and can't.</a><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 href="#99">99 You appear to have a FAQ for everything!</a><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 href="#100">100 If I XYZ, will that work?</a><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 href="#102">102 Hey you skipped question 101!</a><br>
<br>
<a href="#103">103 </a></big><big
 style="font-family: courier new,courier,monospace;"><a href="#103">You
are not taking my bug report very seriously.</a><br>
<br>
<a href="#104">104 </a></big><a href="#104"><big
 style="font-family: courier new,courier,monospace;">Dude. Just answer
my question. It's just one question, ffs.</big></a><br>
<big style="font-family: courier new,courier,monospace;"><br>
<a href="#105">105 Is it possible to upgrade to alpha without killing
everything I've done?</a><br>
<br>
<a href="#106">106 How do I start an area?</a><br>
<br>
<a href="#107">107 I don't want to use a cookie-cutter codebase</a><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<a href="#108">108 How do I make my new area the default domain where
new people to arrive?</a><br>
<br>
<a href="#109">109 I heard passive mode on the FTP server works now.</a><br>
<br>
<a href="#110">110 I boot the mud but nothing happens...the startup
headers<br>
come up but nothing preloads and I get no error messages. What's<br>
going on?</a><br>
<br>
<a href="#111">111 How do I add a default alias?</a><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 href="#112">112 How do reset() and clean_up() work?</a><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<a href="#113">113 When do reset() and clean_up() happen?</a><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 href="#114">114 I want a 100% PK mud. Setting rooms PK one by one is
not acceptable.</a><br>
<br>
</big><a href="#115"><big
 style="font-family: courier new,courier,monospace;">115 How do I make
a new skill?</big></a><br>
<br>
<a href="#116"><big style="font-family: courier new,courier,monospace;">116
Why was Descartes so lame?</big></a><br>
<br>
<a href="#117"><big style="font-family: courier new,courier,monospace;">117
The mud is locked whats the command to add someone to the allow list?</big></a><big
 style="font-family: courier new,courier,monospace;"><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
</big><a href="#118"><big
 style="font-family: courier new,courier,monospace;">118 Shouldn't you
change all the documentation to reflect the move to FluffOS?</big></a><br>
<big style="font-family: courier new,courier,monospace;"><br>
</big><big style="font-family: courier new,courier,monospace;"><a
 href="#119">119 How do I change my timezone?</a><br>
<a href="#120"><br>
</a></big><big style="font-family: courier new,courier,monospace;"><a
 href="#120">120 So I herd u liek mudkip</a><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
</big><a href="http://dead-souls.net/ds-admin-faq.html#121"><big
 style="font-family: courier new,courier,monospace;">121 Where is all
the player information stored?</big></a><br>
<br>
<a href="#122"><big style="font-family: courier new,courier,monospace;">122
The addrace command complains that the race already exists.</big></a><br>
<br>
<a href="#123"><big style="font-family: courier new,courier,monospace;">123
I am confused
about the player/creator distinction.</big></a><br>
<br>
<big style="font-family: courier new,courier,monospace;"><a href="#124">124
How do I prevent people from using channels?</a><br>
<br>
<a href="#125">125 How do i disable the rss bot, or other channels?</a><br>
<br>
<a href="#126">126 I made a verb but it doesn't work.</a><br>
<a href="#127"><br>
127 Does Dead Souls support databases like MYSQL?</a><br>
<br>
<a href="#128">128 How do I make my new currency work?<br>
</a><br>
<a href="#129">129 My friends can't connect to my mud, but I can!</a><br>
<br>
<a href="#130">130 My efun override is not working</a><br>
<br>
<a href="#131">131 How do I remove the QCS?</a><br>
<br>
<a href="#132">132 I heard you can edit stuff from the interwebs?</a><br>
<br>
<a href="#133">133 I want to let people build but I don't want them to
be full creators</a><br>
<br>
<a href="#134">134 How do I enable IMC2? What is it?</a><br>
<br>
<a href="#135">135 Combat is too slow!</a><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 href="#136">136 I want players to select their class when they create
their characters</a><br>
<br>
</big><a href="#136"><big
 style="font-family: courier new,courier,monospace;"></big></a><big
 style="font-family: courier new,courier,monospace;"><a href="#137">137
I am strongly opposed to the use of intermud</a><br>
</big><br>
<a href="#136"><big style="font-family: courier new,courier,monospace;"></big></a><big
 style="font-family: courier new,courier,monospace;"><a href="#138">138
I hate one of the sample domains and I want it GONE</a><br>
<br>
<a href="#139">139 How do I make help files?</a><br>
<br>
<a href="#140">140 How many players will DS handle simultaneously?<br>
</a><br>
<a href="#141">141 I heard that Dead Souls for Windows has limitations<br>
</a><br>
<a href="#142">142 What are the CPU/RAM/diskspace requirements for Dead
Souls?</a><br>
<br>
<a href="#143">143 Who's awesome?</a></big><br>
<br>
<br>
<big style="font-family: courier new,courier,monospace;"></big><big
 style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"><a name="0"></a>How
do I start?</span><br>
<br>
The first thing to do is follow the <a href="ds-inst-faq.html">installation
FAQ</a><br>
to get Dead Souls installed. Then log in, and start reading<br>
the administrator's guide, by typing these commands:<br>
<br>
<span style="font-weight: bold;">read index in guide</span><br
 style="font-weight: bold;">
<br style="font-weight: bold;">
<span style="font-weight: bold;">read chapter 1 in guide</span><br
 style="font-weight: bold;">
<br style="font-weight: bold;">
<span style="font-weight: bold;">read chapter 2 in guide</span><br>
<br>
etc.<br>
<br>
You should also become familiar with the <a
 href="http://dead-souls.net/ds-creator-faq.html">Creator FAQ</a>, in<br>
particular <a href="http://dead-souls.net/ds-creator-faq.html#1.1">the
section on getting questions answered</a>.<br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="1"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Is there a MUD
somewhere running Dead Souls I can log into?</span><br>
<br>
As a convenience to the curious, I have set up a "demo" mud<br>
at dead-souls.net, port 8000. To connect, either click on<br>
<a href="telnet://dead-souls.net:8000">this link</a> with your
browser, or
open a terminal window <br>
(or for windows users, Start -&gt; Run ) and <br>
type: <span style="font-weight: bold;">telnet</span> </big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;">dead-souls.net 8000 </span>, or use
the java
applet<br>
at this page: <a href="http://dead-souls.net/javaclient/demo.html">http://dead-souls.net/javaclient/demo.html</a><br>
<span style="font-weight: bold;"><br>
</span></big><big style="font-family: courier new,courier,monospace;">When
you log in, the system will ask you whether you'd<br>
like to be a player or creator. You'll want to choose "creator"<br>
so that you can examine code, try out the QCS, etc. <br>
<br>
<span style="font-weight: bold; color: rgb(153, 0, 0);">Please note
that in the regular, non-demo version of the</span><br
 style="font-weight: bold; color: rgb(153, 0, 0);">
<span style="font-weight: bold; color: rgb(153, 0, 0);">mud, people are
NOT automatically given that choice. </span><br>
<br>
On the regular non-demo version of the mud, Only<br>
the admin (basically, the first person to log on to the new mud)<br>
gets automatic creatorship by default.<br>
<br>
After logging in, you will be transported<br>
to your workroom. Some useful commands:<br>
<br style="font-weight: bold;">
<span style="font-weight: bold;">look<br>
look at me<br>
look at chest<br style="font-weight: bold;">
</span><span style="font-weight: bold;">open chest<br>
look in chest<br style="font-weight: bold;">
</span><span style="font-weight: bold;">get tricorder from chest</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">read index in handbook</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">read chapter 1 in handbook</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">who</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">stat</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">wiz<br>
create new npc generic<br>
look at board<br>
read 1 on board<br>
home<br>
</span><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="2"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I like Dead
Souls and I want to use it, but I don't want to run a mud.</span><br>
<br>
Being a mud admin is very different from being just a coder<br>
or builder, and many people just don't feel like dealing with<br>
the hassle of running a mud. <br>
There are a few Dead Souls muds out there that could<br>
use help from you. Telnet to the Dead Souls development mud<br>
and type: <span style="font-weight: bold;">mudlist -m Dead</span> to
see a list of Dead Souls muds<br>
that might be hiring.<br>
You can also just code on the Dead Souls development<br>
mud. You're welcome to create as you please, and if your<br>
building gets to the point where you'd like it included in<br>
the lib, let me know and I'll inspect it for approval.<br>
<br>
Please note that starting January 2007, for any of your code to become <br>
part of the official Dead Souls distribution, you must officially <br>
disclaim copyright to it and place it into public domain.<br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="3"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I want to
invite my friends to help me code. How do I</span><br
 style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;">promote
them to creator status?</span><br>
<br>
<span style="font-weight: bold;">encre dude<br>
<br>
</span>To demote them:<span style="font-weight: bold;"><br>
<br>
decre dude<br>
<br>
</span><br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="4"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">What about
intermud? How do I talk on that?</span><br>
<br>
The intermud3 (or i3) network is available<br>
to you, and you are probably already connected to it. Type<br>
<span style="font-weight: bold;">mudlist</span> to see a list of other
muds on the network.<br>
<br>
By default, the "Dead Souls intermud channel" is<br>
enabled for creators. Type: <span style="font-weight: bold;">ds blah
blah</span><br>
and other Dead Souls muds on the i3 network will see<br>
your message like this:<br>
<br>
<span style="font-weight: bold;">You@YourMud <span
 style="color: rgb(255, 204, 0);">&lt;ds&gt;</span> blah blah</span><br
 style="font-weight: bold;">
<br>
Please note that intercre is where you ask coding<br>
and technical questions only. Random chatting is not<br>
tolerated on that channel. Newbie questions that are<br>
Dead Souls specific or that obviously have answers in<br>
Dead Souls documentation may meet a hostile reception on <br>
intercre.<br>
<br>
Conversely, dchat is mostly chat. <br>
<br>
<span style="color: rgb(102, 0, 0); font-weight: bold;"></span><span
 style="font-weight: bold;">Note: </span><span
 style="color: rgb(255, 0, 0);">If you decide to add the intergossip
channel to</span><br style="color: rgb(255, 0, 0);">
<span style="color: rgb(255, 0, 0);">yourself or your creators, be
aware that conversations</span><br style="color: rgb(255, 0, 0);">
<span style="color: rgb(255, 0, 0);">there tend often not to be
PG-rated. You can</span><br style="color: rgb(255, 0, 0);">
<span style="color: rgb(255, 0, 0);">also find yourself baited into a
flamebattle if</span><br style="color: rgb(255, 0, 0);">
<span style="color: rgb(255, 0, 0);">you're not careful. I protect
newbies as I can, but</span><br style="color: rgb(255, 0, 0);">
<span style="color: rgb(255, 0, 0);">it helps if you can prevent
yourself from being baited.</span><br style="color: rgb(255, 0, 0);">
<span style="color: rgb(255, 0, 0);">Really I'd suggest you avoid the
intergossip channel</span><br style="color: rgb(255, 0, 0);">
<span style="color: rgb(255, 0, 0);">entirely.</span><br>
<br>
The lpuni channel is a mix of chat and official <a href="lpu_faq.html">LPUniversity</a>
<br>
business. The LPUniversity project has been dead as of<br>
November 2006, though, so the channel's existence is likely<br>
to be a matter of historical, and not practical, relevance.<br>
<br>
The ds channel is for Dead Souls-related conversation. Sometimes<br>
the topic drifts, but "random chat" should be avoided<br>
there. Use dchat for off-topic chat. If you don't already<br>
have dchat enabled, type: <span style="font-weight: bold;">call
me-&gt;AddChannel("dchat")</span></big><big
 style="font-family: courier new,courier,monospace;"><br>
<br>
For information on IMC2, a different intermud network, <br>
see: <a href="http://dead-souls.net/ds-admin-faq.html#134">http://dead-souls.net/ds-admin-faq.html#134</a></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"></span><br>
<br>
<br style="text-decoration: underline; font-weight: bold;">
<span style="text-decoration: underline; font-weight: bold;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="5"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="text-decoration: underline; font-weight: bold;">I talk on
intermud but nobody replies. What's up with that?</span><br>
<br>
If you haven't changed your MUD's name from the<br>
stock default (ie if your mud name is DeadSoulsWin <br>
or DeadSoulsNew) then your mud may be conflicting with<br>
someone else's new mud that is already connected to<br>
intermud. <a href="#82">Change your mud's name</a> and see if this
helps.<br>
<br>
Another possible cause is network problems.<br>
I3 uses a hub topology. All muds communicating on intermud<br>
connect to the router to do so. If that router is down all<br>
i3 communication stops, until it comes back up. To check<br>
network status, ping Frontiers or Dead Souls. If the<br>
ping command gets no answer, i3 is probably down, or<br>
your connection to it has been interrupted. Your mud will<br>
be aware of this and retry to connect to i3 every<br>
fifteen minutes or so.<br>
<br>
There's also the possibility that nobody who wants to<br>
chat is listening.<br>
<br>
It's also possible that the Dead Souls I3 router has<br>
changed address or port. Visit this page to get the<br>
latest connection info:<br>
<a href="http://dead-souls.net/router.html"><br>
Dead Souls I3 Router Page</a><br>
<br>
Under some unusual circumstances, the router might<br>
be misbehaving. If that happens, post a question on<br>
the lpmuds intermud topic: <a href="http://lpmuds.net/forum/">http://lpmuds.net/forum/</a><br>
<br>
Please make sure you post on the Intermud topic.<br>
<br>
It may also be that you have been earmuffed by <br>
other people, because you've annoyed them. You<br>
can avoid this by becoming familiar with the<br>
<a href="#99">proper way to find answers</a>.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="6"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How did you
know my mud started up?</span><br>
<br>
The same way your mud knows that i3 is up or<br>
down. A while ago I noticed that i3 can be very<br>
unreliable, and sometimes when it goes down and<br>
comes back up, people's muds don't refresh their<br>
connection, and they can be off intermud for days<br>
without realizing it.<br>
<br>
I implemented a "keepalive" system which<br>
uses the intermud "auth" packets as pings. Every <br>
five minutes or so, your mud tries to ping Frontiers,<br>
Dead Souls, and itself. If it gets a reply from at <br>
least one, then it's happy. If neither reply, then your <br>
mud alerts the Arch room that intermud is down, and it<br>
will reload the intermud daemon every 15 minutes<br>
in an attempt to reconnect. Once i3 is back up and<br>
you are reconnected, you go back to pinging.<br>
<br>
This means that Frontiers and Dead Souls<br>
get a bunch of pings all the time. When a mud we've<br>
never heard of before pings us, we get a message<br>
about it, and so we know a new mud is online.<br>
<br>
If this makes you feel like Big Brother<br>
is watching you, you can edit "PINGING_MUDS" in<br>
/secure/include/config.h to have the name of<br>
your own mud only, so you just ping yourself.<br>
<br>
You can also disable your intermud connection with the command:<br>
<br>
<span style="font-weight: bold;">mudconfig intermud disable</span><br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="7"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I heard there's
an I3 router included in Dead Souls.</span><br>
<br>
Please see the <a href="http://dead-souls.net/router.html">router page</a>
for details.<br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="8"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">What's this
about a manual on Frontiers?</span><br>
<br>
It's no longer relevant. All the docs<br>
we were making available on Frontiers are now included<br>
in Dead Souls, starting from version 1.9r9.<br>
<br>
In your workroom is a chest. Open the<br>
chest and the new Dead Souls Creators Manual is<br>
inside. The text files are in /doc/manual .<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span><span
 style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="9"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How do I add
limbs to a race?</span><br>
<br>
Edit /secure/cfg/races/&lt;race&gt; and make the changes<br>
you want. Then use <span style="font-weight: bold;">removerace</span>
to remove the race from the<br>
races daemon, then add re-add the race with <span
 style="font-weight: bold;">addrace</span> . <br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="10"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How do I add a
race?</span><br>
<br>
Copy a race in </big><big
 style="font-family: courier new,courier,monospace;">/secure/cfg/races/
and edit it.<br>
For example:<br>
<br>
<span style="font-weight: bold;">cp </span></big><big
 style="font-weight: bold; font-family: courier new,courier,monospace;">/secure/cfg/races/bear</big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"> /secure/cfg/races/wampa</span><br>
<br>
Edit the wampa file to reflect what you think a<br>
wampa is like. If you want new players to be able<br>
to select wampa as their race, make sure the file<br>
has this line in it:<br>
<br>
PLAYER_RACE 1<br>
<br>
Make especially sure to change the lines RACE and<br>
LANGUAGE. When you're done editing, type:<br>
<br>
<span style="font-weight: bold;">addrace wampa</span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"> </span><br>
<br>
For details:<br>
<span style="font-weight: bold;">help addrace<br>
<br>
</span>Note that the race file PLAYER_RACE line overrides <br>
the options used in the addrace command.<br>
<br>
NOTE: It is possible to remove all races. However, please<br>
read the following discussion to get an idea of the issues<br>
involved:<br>
<br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.08] Ohm@ashdev
&lt;dead_souls&gt; Hey, if the removeraces command will screw up
something, will removing the races manually from admintool have the
same effect?</span><br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.08] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; ok let's take this one step at a time</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.09] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; removeraces will erase the list of races
held in the races daemon</span><br style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.09] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; what this means is that when you try to
clone a bear, you will get a big pukey error message</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.10] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; because bears aren't a race any more, so
the npc you try to clone will error out</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.10] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; i consider that "broken" behavior,
because i dont like it</span><br style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.10] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; but you'll only see it if you try to load
npc's, aka mobs<br>
<span style="color: rgb(0, 0, 0); font-weight: bold;">[Ed note:
removing all races will also screw your players]</span><br>
</span><span style="color: rgb(204, 0, 0);">[2006.11.20-18.11]
Ohm@ashdev &lt;dead_souls&gt; what if I want to get rid of all those
races, and all of those mobs?</span><br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.11] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; right</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.11] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; before i answer your question</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.12] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; do you plan to have dogs n cats n deer n
stuff?</span><br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.12] Ohm@ashdev
&lt;dead_souls&gt; No. I'm want to completely write all my mobs from
scratch, because they're based on a very specific virtual world.</span><br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.12] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; ok</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.13] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; what you want to do is not complicated</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.13] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; so i hope yer not getting that vibe</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.13] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; the reason i'm cautioning you against it
is</span><br style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.14] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; that removing all races basically makes
lots of rooms not work anymore, because they contain npc's that
requireraces to exist</span><br>
[2006.11.20-18.14] Syphon@WorldWideResistance &lt;dead_souls&gt; eep,
That's a bit of editing<br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.14] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; and disabling sample areas isn't
something i recommend to someone who's starting out</span><br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.15] Ohm@ashdev
&lt;dead_souls&gt; right, that's what I'm trying to figure out. How can
I get rid of the mobs, and other spots that require them so it will run
right.</span><br>
[2006.11.20-18.15] Syphon@WorldWideResistance &lt;dead_souls&gt; Can't
he just dest npc in all the rooms ?<br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.15] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; ok</span><br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.15] Ohm@ashdev
&lt;dead_souls&gt; I'm newish to ds, but I've worked with plenty of
other muds, and I figured I can reference to the backups if I need help.</span><br>
[2006.11.20-18.15] Syphon@WorldWideResistance &lt;dead_souls&gt; How
many rooms are there<br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.15] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; desting an npc doesnt permanently remove
it from the room</span><br>
[2006.11.20-18.15] Syphon@WorldWideResistance &lt;dead_souls&gt; ah<br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.15] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; to permanently remove an npc</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.16] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; walk into the room it's in</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.16] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; and then: delete &lt;npc&gt;</span><br>
[2006.11.20-18.16] Syphon@WorldWideResistance &lt;dead_souls&gt; nod<br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.16] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; where &lt;npc&gt; is the name of the npc</span><br>
[2006.11.20-18.16] &lt;dead_souls&gt; Zeus@Ancient Rome deletes
Cratylus...wait that won't work :P<br>
[2006.11.20-18.16] &lt;dead_souls&gt; Zeus@Ancient Rome watches the
delete backfire and melts into a pile of goo<br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.16] Ohm@ashdev
&lt;dead_souls&gt; yea, but that's not exactly practical in my
situation... I want to get rid of ALL npcs in ALL rooms.</span><br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.17] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; ok</span><br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.18] Ohm@ashdev
&lt;dead_souls&gt; wait, this doesn't make sense... the only npc I see
in the source files is fighter.c</span><br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.19] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; here's what i think then</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.19] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; if the sampel areas are incompatible with
your vision, then just don't use them</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.20] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; not trying to be difficult, but if it's a
lot of trouble to back-port to them, you're probably better off
concentrating on your original areas</span><br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.20] Ohm@ashdev
&lt;dead_souls&gt; when you first load the server, what areas are
loaded, and from where?</span><br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.21] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; the mud expects /domains/default to exist
for some stuff like the default death room and such</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.21] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; but by editing /secure/include/rooms.h
you can just substitute your own rooms for these system functions</span><br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.21] Ohm@ashdev
&lt;dead_souls&gt; Ohhhhhhhhh! Okay. I see now.</span><br>
[2006.11.20-18.22] Kriton@Dead Souls Arena &lt;dead_souls&gt;
send_messages needs a man page :P<br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.22] Ohm@ashdev
&lt;dead_souls&gt; So you're saying the npcs listed in
domains/default/npc/ are required because rooms listed in rooms.h try
and load some of those npcs.</span><br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.23] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; not quite</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.23] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; hang on crazy 2 yr old</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.28] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; ok</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.28] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; in /secure/include/rooms.h you can see
that special rooms are specified</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.29] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; the start room, the death room, etc</span><br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.29] Ohm@ashdev
&lt;dead_souls&gt; right</span><br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.29] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; the mud needs these to exist, or your
users will be helpless</span><br style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.29] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; ok</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.29] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; my point is, you dont need to use the
ones that are there</span><br style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.29] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; make your own, and then put the filenames
in the rooms.h file</span><br style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.30] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; nobody who plays your mud ever needs to
see a single stock room</span><br style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.30] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; they can just exist like an appendix,
unused, unneeded</span><br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.30] Ohm@ashdev
&lt;dead_souls&gt; ok</span><br>
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.30] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; eventually, once they have no usefulness,
deleted</span><br style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.31] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; but for now, i think they *are* useful to
you</span><br style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.31] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; as examples</span><br
 style="color: rgb(0, 0, 153);">
<span style="color: rgb(0, 0, 153);">[2006.11.20-18.31] Cratylus@Dead
Souls Demo &lt;dead_souls&gt; which is why i caution you against just
deleting lots of stuff before you get the hang of how i all works</span><br>
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.32] Ohm@ashdev
&lt;dead_souls&gt; ok, that makes sense</span><br
 style="color: rgb(204, 0, 0);">
<span style="color: rgb(204, 0, 0);">[2006.11.20-18.32] Ohm@ashdev
&lt;dead_souls&gt; I really just needed to know what I had to do to
remove all stock rooms from player view</span><br>
<span style="font-weight: bold;"></span><br>
<br style="font-weight: bold; text-decoration: underline;">
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="11"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How do I make
my friend an admin?</span><br>
<br>
<span style="font-weight: bold;"><br>
</span>To make a creator named Xyzzy an assistant admin, type:<span
 style="font-weight: bold;"><br>
<br>
groupmod -a ASSIST xyzzy <br>
<br>
</span>Xyzzy then needs to log out and log back in. To<br>
make him a full admin, you'd add him to the SECURE group instead.<br>
<span style="font-weight: bold;"></span><br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="12"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I don't like
how the who command output looks! You should change it.</span><br>
<br>
Believe it or not, I actually get requests like this. I also<br>
get stuff like "the inventory list should be chronological in<br>
order of acquisition." Maybe that's a good idea, but it's<br>
your mud, not mine. Make it so for yourself.<br>
<br>
If there is something broken about the lib itself, such as<br>
an insta-death bug or a command that crashes the mud, I am<br>
happy and eager to hear about it, so I can implement the fix<br>
in the next lib release. If a normal action causes a runtime<br>
error or abnormal behavior, I need to know that. Also typoes, null<br>
error messages, etc...in short, tell me what's broken.<br>
However, if the problem you're having is that the lib,<br>
by design, behaves in a way not to your liking, this isn't something<br>
I'm likely to "fix" for you. For example, if you want a "<span
 style="font-weight: bold;">who</span>"<br>
command with a cooler look, that's up to you to make. You're<br>
the one coding a mud, so you need to take it upon yourself to<br>
understand the code and modify it to suit your tastes.<br>
Similarly, "orcs are too strong!" or "advancing levels<br>
should increase your eyesight" are issues you need to deal<br>
with on your own, using the coding skills learned from reading the<br>
Creator's Manual.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="13"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Can you please
make the FAQ easier to read? It's too long and complicated.</span><br>
<br>
No.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="14"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Most of the
file headers have only Descartes's name on them. Did</span><br
 style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;">you really
develop this lib or did he?</span><br>
<br>
Both. The lib he released in 1997 was his, and so almost every<br>
file on it had his name. I've been working on it since, but<br>
I am very lazy about headers. I work on lots of files at the<br>
same time, and authorship attribution tends to rank very low<br>
on my priority list. Therefore, even though a great majority <br>
of the files in the lib have been either heavily modified or<br>
created by me, my name is on very few.<br>
<br>
I haven't bothered to go back and revise headers either, <br>
because, honestly, what a pain in the butt that would be. I'm<br>
satisfied knowing there's little doubt who has made the many<br>
changes on the lib.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="15"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How can I
change the colors of the channel messages?</span><br>
<br>
The colors are specified in /secure/daemon/chat.c<br>
<br>
You will need to replace the color specification in more<br>
than one spot in that file.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="16"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How do I know
what other muds use Dead Souls?</span><br>
<br>
<span style="font-weight: bold;"></span><br>
<span style="font-weight: bold;">mudlist -m Dead<br>
</span></big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"><br>
</span>See the <a href="http://dead-souls.net/ds-creator-faq.html">creator's
FAQ</a> for more intermud command info.<br>
<br>
<span style="font-weight: bold;"><br>
</span><span style="text-decoration: underline; font-weight: bold;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="17"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="text-decoration: underline; font-weight: bold;">I was hanging
out in the Arch room and the loudspeaker went off. WTF?</span><span
 style="font-weight: bold;"><br>
</span><br>
Your mud receives all sorts of network requests from the <br>
intermud network, such are remote who (asking who is logged on),<br>
remote finger (info on users), locate (trying to find a user<br>
somewhere on i3), etc. Whenever your mud receives such a request,<br>
it used to be announced in the Arch room. If that is still happening,<br>
you are probably not running a current version of the lib.<br>
<br>
The current behavior is that network messages are<br>
announced in the network room (below the arch room) and router<br>
messages are announced in the router room (south of the<br>
network room).<br>
<br>
Note that these messages are normal,<br>
and do not represent an attempt to undermine your security.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="18"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I want to test
the intermud channel but I don't want to spam the ds line.</span><br>
<br>
Type: <span style="font-weight: bold;">ds_test test</span><br>
<br>
The ds_test channel is specifically for communication<br>
testing so that ds can remain spam free.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="19"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">What's this
"Network room"?</span><br>
<br>
There is a room below the Arch room called the network room.<br>
It is intended to facilitate troubleshooting of network<br>
and intermud problems. Unless you're intimately familiar<br>
with Dead Souls network code, I suggest avoiding this<br>
room, as it is very messy and very noisy.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="20"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">The web server
and FTP server don't work</span><br>
<br>
To enable them at mud boot time for 2.1 and below, uncomment the "inet"
line in<br>
/secure/cfg/preload.cfg<br>
<br>
To enable it temporarily, type: <span style="font-weight: bold;">update
/secure/daemon/inet</span><br>
<br>
On 2.3 and above, use the commands: <span style="font-weight: bold;">
<br>
mudconfig inet enable
<br>
mudconfig http enable
</span><br>
<br>
These servers do not use the standard ports. The internet standard<br>
http port is 80 and for ftp it is 21. Your mud ftp and web servers<br>
do not use these. <br>
Instead, the network port for your web server is 5 less<br>
than your mud's port, and the ftp port is 1 less.<br>
This means that if your mud is reached by telnetting<br>
to port <span style="color: rgb(204, 0, 0);">6666</span>, your ftp
server will be at <span style="color: rgb(204, 0, 0);">6665</span> and
your web server<br>
will be at <span style="color: rgb(204, 0, 0);">6661</span>.<br>
<br>
Please note that the web and ftp server are not supported. They work,<br>
but whatever security risk they pose is entirely on you.<br>
<br>
<br style="text-decoration: underline; font-weight: bold;">
<span style="text-decoration: underline; font-weight: bold;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="21"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="text-decoration: underline; font-weight: bold;">I tried to log
in to the FTP server but I can't!</span><br>
<br>
Make sure you use your mud name and mud password, not the<br>
username and password of the computer you are on.<br>
<br>
<br>
<span style="text-decoration: underline; font-weight: bold;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="22"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="text-decoration: underline; font-weight: bold;">I can't do
anything with FTP. It just hangs there.</span><br>
<br>
FTP is a funny sort of protocol. If you don't have a direct<br>
connection to an FTP server (for example, you are behind a<br>
firewall), you have to use PASV (or passive) mode. Unfortunately,<br>
at this time, PASV is not implemented in the mud FTP server. <br>
<br>
<span style="font-weight: bold; text-decoration: underline;">*UPDATE</span>:
As of Dead Souls 2.1a19 there is a passive-mode<br>
compliant ftp server included in the lib. See <a href="#109">this link</a><br>
for more information.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="23"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">The web server
gives me a 404 but I know the directory is there.</span><br>
<br>
Like the FTP server, the web server is a very simple program.<br>
It does not do directory listings at all. If you request<br>
a directory, and it can't find an "index.html" file, it<br>
just errors out.<br>
<br>
It will also barf if a file you try to serve is <br>
unusually large.<br>
<br>
Let me make this point one final, excruciatingly clear time:<br>
<span style="font-weight: bold; font-style: italic;">If you need a
webserver, use apache.</span> The mud www server is available<br>
as a convenience, not as a production-quality standards-compliant<br>
intarweb server.<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold;"></span><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="24"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I'm using an
external FTP server, but the files I transfer<br>
become read only!<br>
<br>
</span></big><big style="font-family: courier new,courier,monospace;">You
need to make sure that the FTP server you use<br>
runs as the same user as the mud driver does, otherwise<br>
you'll have permissions conflicts.<br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"></span><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="text-decoration: underline; font-weight: bold;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="25"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="text-decoration: underline; font-weight: bold;">I moved a
command from one directory to another. How do I get the new location
recognized?</span><br>
<br>
First, run update on the command in question.<br>
then:<br>
If it's not a verb: <span style="font-weight: bold;">update
/daemon/command</span><br>
If it's a verb: <span style="font-weight: bold;">update /daemon/verbs<br>
<br>
</span><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="26"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">The mudtime is
all wrong!</span><br>
<br>
The <span style="font-weight: bold;">mudtime</span> command tells you
what time it is in the game, not what time<br>
it is in the real world. This mud time, or game time, passes much more<br>
quickly than normal, real-world time, so you may see a few sunrises and<br>
sunsets in the game while playing. Hopefully you are sufficiently<br>
well-adjusted that this will not occur in real life.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="27"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">The time of day
is all wrong!</span><br>
<br>
If you used <span style="font-weight: bold;">admintool</span> to
change your timezone and the time of day is still<br>
wrong, you may be using an OS with timekeeping that Dead Souls doesn't<br>
understand. You may be using a UNIX operating system that is set for <br>
GMT offsets, rather than local time.<br>
<br>
If this is so, figure out how many hours off you are, and<br>
enter that value into the EXTRA_TIME_OFFSET parameter in
/secure/include/config.h<br>
If you're running a version of Dead Souls higher than 2.1.1, you<br>
should also make sure LOCAL_TIME in /secure/include/config.h is set to
0.<br>
<br>
Also make sure to change your timezone during daylight saving<br>
changes. For example, EDT to EST, and vice versa.<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="28"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">What happened
to the roommaker and thingmaker?</span><br>
<br>
They produced code that was often incompatible with QCS. They are no<br>
longer supported.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="29"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I keep getting
'Connection to address server (localhost 9999) refused.' </span><br>
<br>
This is a harmless error. Dead Souls uses a program called addr_server
to<br>
try to resolve hostnames. However, hostname resolution is not important<br>
to running the mud, so it's not automatically configured. If you run<br>
addr_server with a specific port as an argument, and edit mudos.cfg to<br>
point to that port for the addr_server, then reboot the mud, then you<br>
will probably have hostname resolution in your mud.<br>
<br>
However, not all OS'es handle name resolution the same, so this may not<br>
work, even if you do everything exactly right. Either way, it doesn't<br>
affect the mud.<br>
<br>
<span style="text-decoration: underline; font-weight: bold;"></span><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="30"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Can I charge
players a fee for playing on my mud?</span><br>
<br>
<big><big style="color: rgb(204, 0, 0);"><span
 style="font-weight: bold;">NO.</span></big></big> <br>
<br>
Dead Souls uses MudOS, and MudOS has a license that specifically<br>
and strictly forbids its use in a commercial way. I don't care how<br>
you use the lib, but if you use it with MudOS, you need to comply<br>
with MudOS licensing. If you were to port Dead Souls to some other<br>
driver that allows commercial use, then you'd be all set.<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="31"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Can people
donate money to me for the mud?</span><br>
<br>
<big><big><span style="color: rgb(204, 0, 0); font-weight: bold;">Yes.</span></big></big><br
 style="font-weight: bold;">
<br>
So long as there is no quid-pro-quo, or anything<br>
about the transaction that is legally regarded as "commercial",<br>
receiving money from people for the purpose of running the<br>
mud is ok. However, I am not a lawyer, so read the MudOS<br>
license yourself.<br>
<br>
You should not try to bend the rules. For<br>
example, public television channels often give trinkets to<br>
donors as a token of their appreciation. If someone donates<br>
money to you for your mud and they get a "thank you gift",<br>
this is a quid-pro-quo, or "something for something", and<br>
it's not right.<br>
<br>
This is a MudOS thing, not a Dead Souls thing.<br>
If you can't abide by MudOS licensing, just port Dead<br>
Souls to some driver that lets you do commercial stuff.<br>
Then please tell me how you did it, so I can pass on the<br>
leetness to others.<br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="32"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I found a bug.
For real. Can you please fix it?</span><br>
<br>
Email me: &lt;put my name here&gt;@comcast.net<br>
<br>
Please include a detailed description of the bug, and the exact<br>
error text and commands that produced it. A log file or<br>
screencap would be helpful.<br>
<br>
Make sure you have read this:<br>
<br>
<a href="http://www.chiark.greenend.org.uk/%7Esgtatham/bugs.html">http://www.chiark.greenend.org.uk/~sgtatham/bugs.html</a><br>
<br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="33"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Where would I
edit to change how long someone can be idle before they get
disconnected?</span><br>
<br>
1) Modify IDLE_TIMEOUT in /secure/include/config.h<br>
</big><big style="font-family: courier new,courier,monospace;">Don't do
this with a Windows editor.<br>
</big><br style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;">2) </big><big
 style="font-family: courier new,courier,monospace;">update
/secure/daemon/master<br>
<br>
3) update -r /lib/player<br>
<br>
Instead of the updates you can reboot the mud.<br>
<br>
Users of Dead Souls versions above 2.1a15 can type (for example): <br>
<br>
<span style="font-weight: bold;">mudconfig maxidle 14400<br>
<br>
</span>To make players get logged off after four hours. Setting the<br>
number to 0 makes it so there is no idling timeout enforced.<br>
<br>
Note that logged-in players need to log off and log back on for<br>
this change to take effect.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="34"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How do I permit
all users who log in to become creators automatically?</span><br
 style="font-weight: bold; text-decoration: underline;">
<br>
1) Set AUTO_WIZ </big><big
 style="font-family: courier new,courier,monospace;">in
/secure/include/config.h to 1<br>
</big><big style="font-family: courier new,courier,monospace;">Don't do
this with a Windows editor.<br>
</big><br style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;">2) </big><big
 style="font-family: courier new,courier,monospace;">update
/secure/daemon/master<br>
<br>
3) update /secure/lib/connect<br>
<br>
Instead of the updates you can reboot the mud.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">Users of
Dead Souls versions above 2.1a15 can just type:<br>
<span style="font-weight: bold;">mudconfig autowiz on</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="text-decoration: underline; font-weight: bold;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="35"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="text-decoration: underline; font-weight: bold;">How do I limit
the use of intermud channels?</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;">1) Set
RESTRICTED_INTERMUD </big><big
 style="font-family: courier new,courier,monospace;">in
/secure/include/config.h to 1<br>
</big><big style="font-family: courier new,courier,monospace;">Don't do
this with a Windows editor.<br>
</big><br style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;">2) Add the
players who are allowed to use intermud channels to<br>
the intermud group using admintool.<br>
<br>
3) update /secure/daemon/master<br>
<br>
4) update /daemon/services/*<br>
<br>
5) update /daemon/services<br>
<br>
6) update /daemon/intermud<br>
<br>
7) update /secure/daemon/chat<br>
<br>
Instead of these updates, you could just reboot the mud.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">Users of
Dead Souls versions above 2.1a15 can </big><big
 style="font-family: courier new,courier,monospace;">just </big><big
 style="font-family: courier new,courier,monospace;">type:<br>
<span style="font-weight: bold;">mudconfig intermud restrict</span><br>
<br>
They can also use groupmod to add/remove users to the<br>
intermud group:<br>
<span style="font-weight: bold;">groupmod -a intermud joebob</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">groupmod -r intermud jimbob</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="36"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How do I get
off intermud completely?</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;">1) Set
DISABLE_INTERMUD </big><big
 style="font-family: courier new,courier,monospace;">in
/secure/include/config.h to 1<br>
</big><big style="font-family: courier new,courier,monospace;">Don't do
this with a Windows editor.<br>
</big><br style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;">2) </big><big
 style="font-family: courier new,courier,monospace;">update
/secure/daemon/master<br>
<br>
3) update /daemon/intermud<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">Users of
Dead Souls versions above 2.1a15 can just type:<br>
<span style="font-weight: bold;">mudconfig intermud disable<br>
<br>
</span></big><big style="font-family: courier new,courier,monospace;"><br
 style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="37"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How do I change
the start room for the mud?</span><br>
<br>
1) change ROOM_START in /secure/include/rooms.h<br>
</big><big style="font-family: courier new,courier,monospace;">Don't do
this with a Windows editor.<br>
</big><br style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;">2) reboot the
mud<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">Users of
Dead Souls versions above 2.1a15 can just type (for example):<br>
<span style="font-weight: bold;">mudconfig startroom
/domains/MystyDragonClouds/room/cloud_nine<br>
</span>If you use mudconfig for this, a reboot isn't necessary, but
it'll<br>
ensure all objects in the mud use the new start room.<span
 style="font-weight: bold;"><br>
</span><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="38"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I don't like
having newbies get special treatment.</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;">1) Set
MAX_NEWBIE_LEVEL </big><big
 style="font-family: courier new,courier,monospace;">in
/secure/include/config.h to 0<br>
Don't do this with a Windows editor.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">2)
reboot the mud<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">Users of
Dead Souls versions above 2.1a15 can just type:<br>
<span style="font-weight: bold;">mudconfig newbielevel 0<br>
</span>then:<span style="font-weight: bold;"><br>
update -r /lib/player<br>
</span></big><big style="font-family: courier new,courier,monospace;"><br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="39"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I don't want
players to be able to pick non-human races.</span><br>
<br>
1) Set HUMANS_ONLY in </big><big
 style="font-family: courier new,courier,monospace;">/secure/include/config.h
to 1<br>
</big><big style="font-family: courier new,courier,monospace;">Don't do
this with a Windows editor.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">2)
reboot the mud<br>
<br>
* Note that this will not affect players who are <br>
already non-human.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">Users of
Dead Souls versions above 2.1a15 can just type:<br>
<span style="font-weight: bold;">mudconfig justhumans 1</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="40"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I want everyone
to speak the same language.</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;">1) Set
ENGLISH_ONLY in </big><big
 style="font-family: courier new,courier,monospace;">/secure/include/config.h
to 1<br>
</big><big style="font-family: courier new,courier,monospace;">Don't do
this with a Windows editor.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">2)
reboot the mud<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">Users of
Dead Souls versions above 2.1a15 can type:<br>
<span style="font-weight: bold;">mudconfig justenglish 1</span></big><br>
<big style="font-family: courier new,courier,monospace;"><br>
* Note that this may not affect players who already<br>
are not native English speakers. To change them, <br>
type:<br>
<br>
<span style="font-weight: bold;">call
players_name_here-&gt;SetNativeLanguage("English")</span></big><big
 style="font-family: courier new,courier,monospace;"><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="41"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I made a change
to /lib/player.c and updated it, but I'm</span><br
 style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;">not seeing
a difference in my character.<br>
<span style="text-decoration: underline;"></span><br>
</span><br>
If an object (you) is loaded into memory, it contains<br>
the features and functions of its file and inherited files<br>
<span style="font-style: italic;">at the time it was loaded</span>.<br>
<br>
Changing those files and updating them doesn't do<br>
anything to an object that is already loaded using the<br>
old code.<br>
<br>
In a case like this, what you want to do is<br>
recursively update the file of the object in question,<br>
then reload the object.<br>
<br>
Let's say you modified /lib/npc.c so that<br>
npc's sit down by default. Say you want the fighter in<br>
your test room to possess this new functionality.<br>
<br>
If you type: <span style="font-weight: bold;">reload -r fighter</span><br>
<br>
then the fighter's file is recursively updated,<br>
the current version of the fighter is whisked away, and<br>
a new version of the fighter is created, incorporating<br>
the new auto-sit feature.<br>
<br>
If the change in question is to lib/player.c<br>
or some other file inherited by you, you would<br>
type:<br>
<br>
<span style="font-weight: bold;">update -r /lib/creator</span><br>
<br>
But you are still using that same old body as<br>
before, so you'll need to quit and log back in to <br>
get a new body using the new code.<br>
<br>
Note that disconnecting and logging back in is not enough.<br>
You have to actually quit, so your old player object<br>
is completely destroyed.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="42"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How do I change
the items new players receive?</span><br>
<br>
Look in /lib/player.c for the function that gives<br>
new players jeans and a t-shirt. Modify this<br>
function to suit you. Make absolutely sure that<br>
the objects you put there actually clone<br>
correctly.<br>
<br>
Remember to <span style="font-weight: bold;">bk /lib/player</span>
before editing this file,<br>
because if you screw it, then log off without <br>
restoring a working copy, you will be sad.<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="43"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="text-decoration: underline; font-weight: bold;">Hey, there's no
&lt;foo&gt; class! What's up with that?</span><br>
<br>
True, there is no samurai class, and in fact, as of<br>
this writing there is no cleric, acrobat, frombotzer,<br>
or basketweaver.<br>
<br>
The reason for this is that the Dead Souls<br>
mudlib distribution isn't intended to be 100% ready for <br>
players to show up and start doing quests.<br>
<br>
What quests there are, what races, classes,<br>
areas, objects, rooms, and NPC's you find in the<br>
distribution are examples. If you open your mud<br>
to players and what you've got is the Orcslayer and<br>
newbie mansion quests, you might as well just close down.<br>
In fact, please do.<br>
<br>
Dead Souls is a starting point for a mud.<br>
I have no way of knowing if you're going to have<br>
mermen in an aquatic-theme mud. I have no clue <br>
whether your space aliens will have 8 tentacles or<br>
16 (they like base2, dontcha know).<br>
<br>
So, no, there's no &lt;foo&gt;, because the<br>
responsibility for making the mud in your creative<br>
vision is yours, not mine. My job is to give you<br>
a lib with enough working examples and enough<br>
documentation so that you can code your own<br>
basketweaving bugblatter beasts.</big><br
 style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;"><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="44"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Where can I get
a Dead Souls mud hosted?</span><br>
<br>
That's a heck of a good question. There are many mud hosting services<br>
out there. A good host will have a high level of service, shell<br>
and file transfer access, etc, for which you obviously will need<br>
to pay money. <br>
<br>
Lately I've heard rave reviews for <a href="http://altrealm.com/">Alternate
Realm Hosting</a> from<br>
people with good judgment. If I weren't already happy with<br>
my arrangements I'd probably give them a day in court. They're<br>
supposedly inexpensive and have very good service and support.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">I'm told
that the free mud hosting at <a
 href="http://isunlimited.net/hosting-mu.php">ISUnlimited</a> is
adequate.</big><br>
<big style="font-family: courier new,courier,monospace;"><br>
There used to be another free mud hosting service I<br>
was aware of, and that's <a href="http://www.frostmud.com/">FrostMud</a>.
It was basically a guy and a Linux<br>
server with room on it for muds. However, there's some sort<br>
of problem he has and it's going away. <br>
<br>
<span style="font-weight: bold;">Update:</span> He wrote me an email
saying he's back, so perhaps you <br>
can still use his service.<br>
<br>
There's no such thing as a free lunch. If you want<br>
a reliably solid, well supported, feature-rich platform for your<br>
mud, quit being a cheapskate and cough up the $9/mo. That's<br>
like, what, three espressos a month. Nobody is too hard up to<br>
host commercially, unless you're on the street. <br>
<br>
I've heard good things about the commercial service <br>
from <a href="http://arthmoor.com/mud-hosting.php">Arthmoor</a> and <a
 href="http://www.genesismuds.com/">Genesis</a>.<br>
<br>
<a href="http://wolfpaw.net/">Wolfpaw</a> also is an excellent
commercial host: stable and reliable. <br>
One of my test muds is hosted there, and this is the uptime report,<br>
as of 25 December 2006:<br>
<br>
<span style="font-weight: bold;">Dead Souls Arena has been up for 11w
6d 7h 28m 34s.<br>
</span><br>
However, Wolfpaw has become rather tired of dealing with <br>
newbie mud admins, so unless you're a hardcore do-it-yourselfer<br>
who just needs a big data pipe and nothing else, you may be<br>
better off with other hosting.<br>
<br>
If you have a DSL or cable modem, and your computer is<br>
up all the time, you can just use that, too. Your IP may be<br>
dynamic, making it tough for people to find you, but there are<br>
dynamic-dns services out there that help keep your ip<br>
tied to a specific name.<br>
<br>
If you're <span style="font-weight: bold; font-style: italic;">really</span>
hard up you can email me and beg for<br>
me to host you for free, but you'll get no fancy schmutz like a <br>
web page or shell access. And if your mud gets on my nerves <br>
(being inactive for a long time is enough to do that) I'll just <br>
wipe it. Possibly without even warning you. It's not that I'm <br>
a jerk or I like being mean. I just don't have a lot of time <br>
for nonsense.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="45"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Your LIB_MXLPLX
system is all screwy. I changed it and it works. Wanna see?</span><br>
<br>
Hell yes. I'm not just in this for my health. I want<br>
more people coding in LPC so I can look at the fresh ideas and<br>
new perspectives of other people (read: swipe code).<br>
<br>
Send me an invitation to your mud by email or &lt;ds&gt;. I'd<br>
love to look at your work.<br>
<br>
If it is code you are willing to donate to Dead Souls, I<br>
will gladly accept its submission, also by email. There's no<br>
guarantee it will make it into any future release, but it just might.<br>
<br>
Please be aware that by doing so, you signal you claim no <br>
copyright to the code (you must make it Public Domain), allowing me to <br>
publish it and preventing you from ever revoking my right to distribute
it.</big><big style="font-family: courier new,courier,monospace;"><br>
<br>
You also represent that no third party has copyright to <br>
the code, and hold me harmless in any subsequent<br>
dispute between you and any other third party.<br>
<br>
If you want to email me code but wish to retain <br>
copyright, please state so clearly in the body of your email. I<br>
will honor that request </big><big
 style="font-family: courier new,courier,monospace;">(and it's the law
so I don't really <br>
have a choice). Just be aware I will not put code into Dead<br>
Souls that anyone other than me has copyright to. I can't<br>
afford the risk of someone deciding I can't distribute<br>
code that DS may eventually rely on.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">Also, I
don't want to hear from anyone about my<br>
use of legal terms of art. I know damn well it's more complicated<br>
than I make it sound. My phrasing is sufficient to make<br>
the legal practical transaction of ideas possible here.<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
The point I'm making should be clear. If it isn't,<br>
please consult applicable laws, etc. <br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="46"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How are files
organized in Dead Souls?</span><br>
<br>
<span style="font-weight: bold;">cd /</span> and <span
 style="font-weight: bold;">ls</span> to view the top level directory.
The<br>
list may be largely meaningless to you, so let's review it here:<br>
<br>
<span style="color: rgb(0, 102, 0); font-weight: bold;">cfg/</span><br>
<br>
General configuration files for timezone and such.<br>
<br>
<span style="color: rgb(0, 102, 0); font-weight: bold;">cmds/</span><br>
<br>
Main location of commands that don't require special access<br>
privileges. Commands are different from verbs in that they tend<br>
not to manipulate your environment, but rather deal with <br>
the player's relationship to the system and/or files.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">daemon/</span><br>
<br>
Daemons are files that provide access to data files in an<br>
organized way. For example, adding an occupational class <br>
(like, say, assassin) to the game needs to be done in a<br>
precise way in order for it not to break things. By sending<br>
the data to the daemon first, you can be sure that the<br>
new system configuration is entered properly. Daemons also<br>
provide a means to access data, like "how much is silver<br>
worth compared to gold", that is uniform across the mud, and <br>
prevents accidental overwrites of data files by multiple<br>
editors.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">doc/</span><br>
<br>
General documentation. <br>
<br style="font-weight: bold; color: rgb(0, 102, 0);">
<span style="font-weight: bold; color: rgb(0, 102, 0);">domains/</span><br>
<br>
This is where MUD game areas go when they are complete<br>
and ready for general play by the public. Once here, only<br>
admins have write access to the files. <br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">estates/</span><br>
<br>
Where player-owned objects and rooms are kept.<br>
<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">ftp/</span><br>
<br>
The base for the MUD ftpd. Using the ftpd is probably dangerous<br>
in terms of your system security, and I discourage it, but if<br>
you are determined to have mud ftp access for your creators, <br>
this is one way. See /secure/lib/net for the actual server. It<br>
may or may not work. I won't support it.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">include/</span><br>
<br>
Include files provide a set of constants for your files. For<br>
example, if you include &lt;damage_types.h&gt;, you can specify in<br>
the code for your chainmail that it protects against<br>
the damage type "BLADE" at a certain level.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">lib/</span><br>
<br>
This is the heart of the Dead Souls lib. This is the location<br>
of the files that your objects, be they swords, shoes, or <br>
handguns, will use as their configuration base. <br>
<br>
<span style="color: rgb(0, 102, 0); font-weight: bold;">log/</span><br>
<br>
Log files.<br>
<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">news/</span><br>
<br>
Announcements are made here. For example, in /news/creator<br>
you can post a notice that you have added a teleportation<br>
spell, and when your creators log on, they will see the message.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">obj/</span><br>
<br>
Contains some important templates, especially some for the QCS.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">open/</span><br>
<br>
Legacy directory. Kept for compatibility. Historically this<br>
directory has served as a place where creators can put code<br>
for others to freely modify.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">realms/</span><br>
<br>
This is where creator home directories are.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">save/</span><br>
<br>
Files that describe properties of the MUD's systems live<br>
here. The number of limbs that a bat has, for example, <br>
is in races.o. In classes.o you'll find the skill ranges<br>
for fighters. Do not edit these files. They must be<br>
modified by daemons only, or you risk corrupting them.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">secure/</span><br>
<br>
This directory will be described in a separate section below.<br>
<br>
<span style="color: rgb(0, 102, 0); font-weight: bold;">shadows/</span><br>
<br>
Shadows are a controversial feature of LPC. This directory<br>
is designed for shadow objects, but they should be very<br>
rarely, if ever used. Basically shadow objects are objects<br>
that attach themselves to another object, intercepting<br>
function calls. For obvious reasons this is a security <br>
risk, so unless you really <span style="font-style: italic;">really</span>
know what you're doing, <br>
avoid them. Shadows not in this directory will not load.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">spells/</span><br>
<br>
Pretty self explanatory. The spells daemon looks for spells here.<br>
Spells not in this directory will not be available.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">std/</span><br>
<br>
Provided for backward-compatibility with older lib<br>
files. Not needed if you aren't porting from an older<br>
or different lib (such as TMI-2 or LPUniversity).<br>
<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">tmp/</span><br>
<br>
A directory anyone can write to. Generally for swapping<br>
data between objects, systems, or people. Note: files<br>
here can't be loaded into memory with the update command, <br>
for security reasons. If you need to put something in<br>
a world-writable place but need it to be loadable, use<br>
/open instead.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">verbs/</span><br>
<br>
A controversial topic. Verbs are a kind of command. For<br>
example, <span style="font-weight: bold;">go</span> and <span
 style="font-weight: bold;">sit</span> and <span
 style="font-weight: bold;">open</span> are verbs. Specifically, verbs<br>
are commands that interact with the user's environment. The<br>
idea is that <span style="font-weight: bold;">throw my first red rock
at the green goblin</span><br>
should work, and should work the same everywhere on the<br>
MUD. Verbs are a source of debate among some people, because<br>
to folks accustomed to add_action commands, verbs seem<br>
excessively complex. Verbs not in this directory will<br>
not load.<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">www/</span><br>
<br>
Like the ftp directory, but for the MUD webserver.<br>
<br>
<br>
Ok now let's take a quick look at the /secure directory: <span
 style="font-weight: bold;">ls /secure</span> <br>
As you can see, /secure seems to have many of the same directories <br>
that the root filesystem has. <br>
The reason a /secure directory is needed is that<br>
there are files that should not be readable by everyone, and<br>
there are files that must be writable only by a few. The MUD security<br>
system uses the /secure directory as a means to control access to <br>
such files.<br>
For example, the average creator has no business <br>
accessing the player data files of other creators or players. Therefore<br>
/secure/save/creators and /secure/save/players is offlimits to them.<br>
<br>
A directory without a counterpart in / is /secure/sefun. This<br>
is where simulated external functions reside. <br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="47"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">What are sefuns
and efuns?</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"> First
let me explain that the driver has built-in<br>
functions that are available to the mud. For example,<br>
type <span style="font-weight: bold;">eval return
find_player("cratylus")</span> , but replace my name<br>
with yours. Your player object pointer will be found and returned<br>
to you (more or less. strictly speaking it's more complicated).<br>
The driver provides this function. Because it is "external"<br>
to the mudlib, that is, it's in the driver and not the lib, <br>
it is called an external function, or more commonly, "efun". The<br>
idea is that certain actions you ask the mud to perform are<br>
so common that they are made available MUD-wide.<br>
<br>
Efuns are ridiculously useful and powerful, and because<br>
they are in the driver as compiled code, very fast. A near-complete<br>
set of efun documentation is available in /doc/efun. <br>
<br>
However, the driver does not contain every possible<br>
MUD-wide function you might want. For example, there is a <br>
tell_object() efun, which lets you send a message to an object<br>
such as a player. The syntax is something like this:<br>
<br>
tell_object(find_player("cratylus"),"Hi.");<br>
<br>
Which doesn't look like much, but believe me, this<br>
kind of stuff adds up. I wanted to make this simpler, so I<br>
used what is called a sefun, or a simulated efun. It is<br>
a function that is available lib-wide, but it isn't in<br>
the driver. Instead it is provided by the lib itself (the<br>
master daemon, specifically). By adding the appropriate code<br>
in /secure/sefun/ I have now made available a tell_player() sefun,<br>
which works like this:<br>
<br>
tell_player("cratylus","Hi.")<br>
<br>
This simplification of code will become more obviously<br>
useful to you as you get more coding under your belt. Most<br>
sefuns are documented in /doc/sefun.<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="48"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Whew! Ok now I
know where stuff is. What's next?</span><br>
<br>
You probably want to examine how objects are written.<br>
Type <span style="font-weight: bold;">goto /domains/town/room/road</span>
and wander around town<br>
a bit. If you want to see the code for something, for example,<br>
the beggar, <span style="font-weight: bold;">about beggar</span>
should do it, provided the beggar is<br>
in the room.<br>
<br>
To see the filenames of the objects around you,<br>
type scan here, or scan me to scan your own inventory. <br>
<br>
If you've never coded before, this is the hard part.<br>
To understand what you're looking at when you run commands like <br>
<span style="font-weight: bold;">more /domains/town/weap/orcslayer.c</span>
you need to get comfortable<br>
with LPC. <br>
<br>
The brute force way of doing this is copying stuff<br>
and then changing the descriptions, thus making new stuff.<br>
This will work, but you'll waste time looking for examples of<br>
exactly what you want to do..and you may not find them. <br>
Instead, learning LPC will let you create whatever<br>
you want, without relying on templates.<br>
<br>
This means that now you must read the LPC Basic<br>
manual, then the LPC Intermediate manual. As admin, your<br>
creators will expect you to know what's in there.<span
 style="text-decoration: underline;"><br>
<span style="text-decoration: underline;"><span
 style="text-decoration: underline;"><span
 style="text-decoration: underline;"><br>
</span></span></span></span> On your person or in the chest in your
workroom is<br>
the Creators Manual. Read both the Players Handbook and<br>
the Creators Manual from cover to cover.<br>
<br>
It's also important to read the Administrator's<br>
Guidebook.<span style="text-decoration: underline;"><span
 style="text-decoration: underline;"></span><br>
</span><br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="49"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Oh, man, you're
kidding! Those are, like, books! Can't I</span><br
 style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;">just start
making stuff?</span><br>
<br>
Well...ok. But you need to go through the docs<br>
soon, ok? In the meantime, read the QCS chapters in the <br>
Creators Manual to get you quick-started in the creation <br>
process. Remember you need to be holding your Creator <br>
Staff in order to access the QCS commands.<br>
<br>
Start with chapter 31, like this:<br>
<br>
<span style="font-weight: bold;">read chapter 31 in my manual</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="50"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Everything is
su-u-u-u-p-e-e-r-r-r s-s-l-o-o-o-o-w-w-w</span><br>
<br>
First, make sure you are using the latest available version of<br>
Dead Souls (check <a href="http://dead-souls.net">here</a>). Older
versions of Dead Souls<br>
are known to have nasty memory leaks.<br>
<br>
Next, see if you have runaway objects. An object can be coded<br>
to do really unpleasant stuff like replicate itself over and<br>
over until it brings the mud to its knees. Find out how many<br>
objects are loaded by typing: <span style="font-weight: bold;">eval
return sizeof(objects())</span><br>
<br>
If the count is in the thousands, and only a few people are<br>
logged on, you<span style="font-weight: bold;"> </span>may have a
runaway. Most often this involves<br>
NPC's doing stuff you didn't expect. Reset all loaded rooms<br>
with the following command (you may need to enter it more<br>
than once): <br>
<br>
<span style="font-weight: bold;">reload every room<br>
<br>
</span>perhaps followed by a:<span style="font-weight: bold;"><br>
<br>
flushobs<br>
</span><span style="font-weight: bold;"></span><br>
If the lag clears up, you found the culprit. If not, see if<br>
the callouts list is clogged with the command: <span
 style="font-weight: bold;">callouts</span><br>
<br>
If all else fails, reboot the mud and ask for help on the ds line.<br>
<br>
Please note that the rage virus (especially if unleashed<br>
in the menagerie) is notorious for redlining the mud. Having<br>
hundreds of NPC's all engaging in simultaneous combat<br>
while infecting each other with a rapidly spreading hostility<br>
virus can be expected to impact overall performance. So please try<br>
to avoid the rage virus unless you are specifically stress testing<br>
your system.<br style="font-weight: bold; text-decoration: underline;">
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="51"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Dude! One of my
creators just kicked me off my own mud!</span><br>
<br>
One of the virtues of LPC is that it is flexible and powerful.<br>
One of the drawbacks of LPC is that it is flexible and powerful.<br>
<br>
It is not possible to make an LP mud that is<br>
immune to abuse from creators. You just can't. The MudOS<br>
function set is just too complex and sophisticated to eliminate<br>
every possibility of abuse.<br>
<br>
You will therefore *always* be vulnerable to things<br>
like people coding objects that crash the mud on purpose (I<br>
won't detail how that can be done, but anyone with intermediate<br>
LPC skill can do it, and utter newbies can even do it with<br>
a stupid enough mistake), finding a way to dest admins, or<br>
continually updating recursively the /lib filesystem. A<br>
jackass will always find a way to expose you to her jackassery.<br>
<br>
This means that you need to know who is coding on your<br>
mud and what they are doing. Your job as an admin is to <br>
immediately deal with coders who pose a discipline problem.<br>
If they fool you once, shame on them. If they fool you<br>
twice..the..they...they shouldn't fool you twice is what I'm<br>
saying.<br>
<br>
This does not mean that Dead Souls is somehow<br>
impossible to secure. You can easily prevent unauthorized<br>
access to lib data. See the next section for how this works.<br>
<br>
What you can't prevent is some dude off the internet<br>
you just met and made a creator from wreaking havoc on your <br>
mud and creating a nuisance of himself. You have to know who <br>
these people are and you have to have a level of trust and <br>
confidence in them, otherwise you need to use the <span
 style="font-weight: bold;">decre</span> <br>
command.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="52"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Is Dead Souls
secure?</span><br>
<br>
The short answer is no, nothing I know of is "secure" in the<br>
sense that you don't need to continually pay attention to it. <br>
<br>
Just like any other Internet program you use, Dead Souls<br>
is not an obvious security risk, so long as it is not used carelessly.<br>
And, obviously, games of any kind, including Dead Souls, should never<br>
be installed on any mission-critical, national security, public<br>
safety, or health care server. <br>
<br>
Dead Souls security involves two separate spheres:<br>
<br>
1) The binary executable and the system that runs it.<br>
<br>
2) The mudlib and the code that you use and create.<br>
<br>
The first sphere is probably most important. Presumably<br>
you plan to run a mud on a computer that does other things too, <br>
and you want to keep those things separate from your mud. The <br>
most important thing to do is to avoid running Dead Souls as a<br>
privileged user. <br>
<br>
In the case of Windows, this means that the<br>
program should not be run by Administrator or anyone in the<br>
Administrator group.<br>
<br>
For unix users, this means that the driver should not run<br>
under uid 0 (root). <br>
<br>
The reason for this precaution is that if some genius<br>
hacker manages to exploit some unknown weakness in the program, <br>
it is better that the process they hack doesn't have full admin<br>
privileges to the box.<br>
<br>
This caution has little to do with Dead Souls specifically.<br>
It is a warning I'd give to anyone planning to run any kind of network<br>
server. You should take your own security seriously, and<br>
if you do not understand your own security situation, you need to take<br>
a step back and ask yourself if running a mud at all is a good idea.<br>
<br>
Sphere 2 is lib security. In older muds, file and directory <br>
privileges were handled by attributes on the files. If a file's<br>
user id (UID) matched a user's UID, then that user had full access<br>
to it. Such systems often had complex systems that evaluated<br>
effective UID (EUID) based on the file's attributes, its parent<br>
directory, the user's ID, possibly group id, etc. This is an<br>
entirely valid security model, but because of its complexity,<br>
it tended to be exploited easily and often. If you don't<br>
stay 100% on top of such a system (just like any OS), there's<br>
no way to be sure you won't rooted.<br>
<br>
With stack security, privilege management is much, much<br>
simpler. A file's privilege is based solely on its location. If<br>
a user doesn't have read access to /foo/bar/ then she can't read<br>
or modify /foo/bar/file.c. If someone with privs to that location<br>
copies the file to somewhere else, then the privs of that new location<br>
are in force on the file.<br>
The "stack" part of stack security comes from the mud<br>
evaluating the privileges of <span
 style="font-weight: bold; font-style: italic;">all the objects
involved in the</span><br style="font-weight: bold; font-style: italic;">
<span style="font-weight: bold; font-style: italic;">access request</span>.
If you're unprivileged and you manage to get a <br>
privileged object to make the access request for you, the access <br>
will fail, because you are unprivileged, and you are still part <br>
of the function call stack (i.e., the list of instructions that<br>
form a chain between the command and the intended event).<br>
<br>
Granular (more detailed) modification of user privileges<br>
can be done by changing files in /secure/cfg to grant <br>
users and groups specific privileges. Also see<br>
the <span style="font-weight: bold;">grant</span> command, as well as <span
 style="font-weight: bold;">domainadmin</span>. <br>
<br>
Security bugs usually aren't about the security model itself<br>
being weak, but rather careless code (generally from me). If<br>
you find such a bug, please let me know right away so I<br>
can fix it. You will receive credit for the discovery on the<br>
hotfix page.<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="53"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I sent you my
code a week ago. Is it in or out?</span><br>
<br>
How long it takes me to review code submissions has nothing<br>
to do with what I think of you, your skills, or your<br>
code. It takes me a long time because Dead Souls isn't<br>
actually my job, and is not a physical member of my<br>
family, so it has to wait its turn sometimes, for my attention.<br>
Sometimes I will get to someone else's code sooner even<br>
though I received yours first. What can I say. Sometimes<br>
I feel like dealing with a particular thing at a particular<br>
time.<br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="54"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">Did you finish
the bfd() sefun modification I asked you for last night?</span><br>
<br>
I'm on the ds line a lot, and generally accommodate people's<br>
requests right away if I have time. This makes it seem<br>
sometimes like I can turn orders around in minutes or<br>
hours, like a short-order cook.<br>
This is an illusion. I do this sometimes<br>
for requests that strike my fancy or that are so simple<br>
they are not inconvenient, or maybe because I happen to<br>
be bored at that moment. But my sometimes doing this<br>
doesn't mean folks should expect some sort of prompt<br>
turnaround on special requests. <br>
In general, I am not sitting at my desk waiting<br>
for code orders. I'm doing something else. If I get to<br>
your request right away, then good for you. If I don't,<br>
then I'll get to it when I get to it. <br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="55"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">The queeg
daemon is a horrendous mess. It's inefficient and frankly offensive.</span><br>
<br>
I'm not an especially gifted programmer. In fact, I view<br>
myself rather as a <a href="http://en.wikipedia.org/wiki/Pakled">Pakled</a>
from the Star Trek series. I<br>
look for things that make the code go. I look for things<br>
that make the code strong. Sometimes, because I am not<br>
a trained or professional programmer, things are done<br>
in a way that shock the conscience of more sophisticated <br>
practitioners.<br>
If you find such code (and I do hope it is rare),<br>
bringing to my attention that it has been implemented in a <br>
wretched way doesn't help me. I know that. I wrote it. If <br>
you want to help, send me an email with the fixed code.<br>
<big> <br>
</big><span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="56"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">You implemented
my code but didn't give me credit.</span><br>
<br>
Whoops. Send me an email telling me where I goofed and I'll fix it.<br>
<br>
<br>
<span style="text-decoration: underline; font-weight: bold;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="57"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="text-decoration: underline; font-weight: bold;">Intermud mail
doesn't work</span><br>
<br>
Yes it does. If you tried to send intermud mail to someone<br>
with Dead Souls and it failed, then one or more of the following is
true:<br>
<br>
* You are using a Dead Souls version below 2.4.1.<br>
* The recipient is using a Dead Souls version below 2.4.1.<br>
* The recipient has disabled their OOB service.<br>
* The recipient has disabled their INET service.<br>
* The recipient is firewalled and cannot accept OOB connections.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="58"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">The admintool
menus let you pick options that aren't visible</span><br>
<br>
I can't decide whether this is a feature or a bug. I'm<br>
leaning toward "laziness".<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="59"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">What does
locking the mud do, exactly?</span><br>
<br>
When the mud is locked, only members of the authorized<br>
groups are permitted to log in. By default, these<br>
groups are SECURE, ASSIST, ELDER, and TEST. Anyone<br>
who is not a member of these groups, whether they are<br>
a creator or a player, is prevented from logging in.<br>
<br>
To lock the mud, use the admintool command, option a.<br>
To add people to groups, use the admintool command, option v.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="60"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">The race help
output is inadequate for role-playing. How do I change it?</span><br>
<br>
By default, <span style="font-weight: bold;">help human</span> will
output various characteristics<br>
of the human race, as known to the race daemon. If you<br>
want instead to provide your own help data on the history and<br>
lore of humans, simply create a file called /doc/help/races/human<br>
and put your information in it. That information will then<br>
be what is displayed when requesting help on that race.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="61"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I need to know
what features to expect in the next release so I don't </span><br
 style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;">waste time
duplicating effort</span><br>
</big><big style="font-family: courier new,courier,monospace;"><small><big><span
 style="text-decoration: underline; font-weight: bold;"></span><br>
Visit <a href="http://dead-souls.net/RELEASE_NOTES">http://dead-souls.net/RELEASE_NOTES</a>
for information on <br>
the latest releases and what they contain. The topmost<br>
version is usually not yet available for download, and<br>
is listed so that folks know what's coming in the<br>
next release. If this is so the version name will have<br>
"(unreleased)" next to it.<br>
<br>
As of 2.0r19, the dsversion command is available to<br>
allow you to query that site from the mud itself.<span
 style="font-weight: bold;"></span><br>
<br>
</big></small></big><big
 style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="62"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">You need a
development roadmap and task tracking</span><br>
<br>
No, I don't. If I had developers and teams and<br>
such things, then I'd use all the fancy project<br>
management stuff available on Sourceforge.<br>
But I don't want to manage developers,<br>
I want to lib code. <br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="63"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">How do I update
a sefun without rebooting the mud?</span><br>
<br>
To have your new nit_pick() sefun take effect in the<br>
running mud, you might do something like this:<br>
<br>
<span style="font-weight: bold;">update /secure/sefun/nit_pick.c</span><br
 style="font-weight: bold;">
<br style="font-weight: bold;">
<span style="font-weight: bold;">update /secure/sefun/sefun.c<br>
<br>
<br>
<span style="text-decoration: underline;"></span></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="64"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"><span style="text-decoration: underline;">My
new sefun updates but I can't seem to use it.</span><br>
</span><br>
Make sure the sefun is prototyped in /secure/sefun/sefun.h<br>
<br>
If the sefun is in a new file you created, make sure<br>
that /secure/sefun/sefun.c inherits that file.<span
 style="font-weight: bold;"><br>
<br>
<br style="text-decoration: underline;">
<span style="text-decoration: underline;"></span></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="65"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"><span style="text-decoration: underline;">What's
the point of the apostrophe-stripping for args in lib/command.c?</span><br>
<br>
</span>It was cheap workaround for a parser problem. Dead Souls 2.1 and<br>
above no longer implement this, as the driver issue has been <br>
corrected.<br>
<br>
<br style="text-decoration: underline;">
<span style="font-weight: bold;"><span
 style="text-decoration: underline;"></span></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="66"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"><span style="text-decoration: underline;">How
does one achieve 'high mortal' or 'ambassador' positions?</span><br>
<br>
</span>Those are legacy positions from DS v1/Nightmare IV/3. They are<br>
basically groups, managed by an arch with admintool, which<br>
can be granted privileges not normally enjoyed by mortals.<br>
In the current implementation of Dead Souls, those<br>
positions are vestigial. You can implement them on your<br>
own mud however you please.<br>
<span style="font-weight: bold;"><br>
<br>
<span style="text-decoration: underline;"></span></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="67"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"><span style="text-decoration: underline;">I
would like XYZ and PDQ to happen every time the mud boots</span><br>
<br>
</span>The most common way to have this happen is to add<br>
your daemon (and typically that's what you'll<br>
want to start at boot) to /secure/cfg/preload.cfg .<br>
This will ensure that it gets loaded<br>
before the mud accepts any connections. It has the<br>
added advantage of being included in the list of daemons<br>
that the mud periodically checks and restarts if they<br>
have died.<br>
<br>
If it isn't a daemon, but rather some<br>
specific function you want to happen at boot, simply<br>
add the relevant code to /secure/daemon/autoexec.c<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="68"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I can't login!
I keep getting: "It seems some work is being </span><br
 style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;">done right
now, try later."</span><br>
<br>
This is bad. What this means is that some<br>
files that are needed in order to load your player <br>
object cannot be loaded. It can be any of a very large<br>
number of files, which is the problem. Usually this<br>
happens if you've been, for example, messing around<br>
with player.c, then broke it, and rebooted the mud. Now<br>
since player.c can't be loaded, you're locked out.<br>
It could be any of the files loaded by your<br>
player object, or other daemon files needed by your<br>
login. The only way to narrow down the possible list of<br>
files you corrupted is by examining the output of the<br>
console (the window where you type the command line<br>
to start the mud) and reviewing log/runtime and <br>
log/catch for clues.<br>
Once you've found the culprit, either fix it,<br>
or replace it with the original version from the<br>
Dead Souls distribution package.<br>
<span style="font-weight: bold;"><br>
</span><br>
<span style="font-weight: bold; text-decoration: underline;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="69"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;">I had a really
great idea that revolutionizes ds and you </span><br
 style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;">refuse to
include it. I am forking ds development and </span><br
 style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;">making my
dream come true.</span><br>
<br>
Ok then, have fun. All I ask is that you give your<br>
project a name that isn't going to confuse people<br>
as to which lib is which. Confusing your user base <br>
isn't a good way to get started on such an enterprise.<br>
Send us a post card once in a while.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br
 style="text-decoration: underline; font-weight: bold;">
<span style="text-decoration: underline; font-weight: bold;"></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="70"></a></span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="text-decoration: underline; font-weight: bold;">What do the
version numbers mean?</span><br>
<br>
2.0r16 means "Major version 2, minor version 0, release number 16".<br>
Releases happen pretty frequently, to add functionality and fix bugs<br>
from the previous release. When the basic functionality of a minor<br>
version is as bug free as reasonably possible, a new minor version<br>
change happens.<br>
Major version number changes are very rare and represent a<br>
vast difference from the old major version. Versions 1 and 2 of<br>
Dead Souls are so different as to be largely incompatible with each<br>
other's code.<br>
<br>
As of this writing, 2.4.1 is released as the current stable version.<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="71"></a><span
 style="font-weight: bold; text-decoration: underline;">The Dead Souls
router is down.</span><br>
<br>
Use the switchrouter command to change between <br>
routers. The new default I3 router for Dead Souls muds is called<br>
*yatmim. So far it's been dramatically more reliable than<br>
the old intermud.org router, which was known as *gjs.<br>
<br>
If the router you are on is down, try using the switchrouter<br>
command to connect to a backup. As of this writing, the *i4<br>
and *yatmim routers serve as mirrors for each other, so<br>
that connecting to one will give you access to the same muds<br>
as those on the other.<br>
<br>
For more information on switching between routers, type:<br>
<br>
<span style="font-weight: bold;">help switchrouter</span><br>
<br>
If the *yatmim router goes down for more than a<br>
few minutes, make sure to check the <a href="router.html">router page</a>
to see if<br>
the IP address or port have changed.<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="72"></a><span
 style="font-weight: bold; text-decoration: underline;">I'm going to
totally revamp &lt;insert highly complex system here&gt;.</span><br
 style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;">Will that
be difficult?</span><br>
<br>
This is, surprisingly, a fairly common question.<br>
Basically, the answer is:<br>
<br>
"If you have to ask, then the answer is yes."<br>
<br>
It's not an impossible task to, say, rewrite<br>
combat to be just like the combat you're used to on LeetFooMud.<br>
It's totally doable, and not *all* that difficult for<br>
an experienced coder.<br>
<br>
But if you're new to LPC, you need to concentrate<br>
on getting the basics down before you put that cart in<br>
front of that horse. Let me phrase it like this:<br>
<br>
"If there's any part of the Creator's Manual you don't<br>
know and understand, you aren't ready to do lib coding yet."<br>
<br>
If you are at 100% grok with the manual, then<br>
please read <a href="http://dead-souls.net/doc/guide/chapter08">chapter
8 of the Admin's Guide</a> to get started<br>
on serious lib work. <br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="73"></a><span
 style="text-decoration: underline; font-weight: bold;">I've hired an
area coder to make a new domain. I want her</span><br
 style="text-decoration: underline; font-weight: bold;">
<span style="text-decoration: underline; font-weight: bold;">to be able
to use QCS in /domains/MistyDragonShireMysts</span><br>
<br>
The default behavior of QCS is to try to figure out<br>
what directory makes most sense to write in. It assumes<br>
that it's only going to write into areas you have write<br>
permission to. Since your new coder doesn't have write<br>
access to /domains/</big><big
 style="font-family: courier new,courier,monospace;">MistyDragonShireMysts,
QCS instead will<br>
write to the next most logical place: her home area directory.<br>
<br>
This is true even if you use the <span style="font-weight: bold;">grant</span>
command <br>
to enhance her access. QCS's authentication mechanism is<br>
entirely separate from the grant/access system, which works<br>
fine for non-QCS editing.<br>
<br>
To make your new domain, use the domaincreate command:<br>
<br>
<span style="font-weight: bold;">domaincreate MistyDragonShireMysts</span><br>
<br>
To enable your new coder to use QCS in that domain,<br>
use the <span style="font-weight: bold;">domainadmin</span> command to
manage the admins of that<br>
domain. A domain may have more than one admin at the same time.<br>
<br>
For more information on domainadmin, type:<br>
<span style="font-weight: bold;">help domainadmin</span><br>
<br>
For more details on where QCS puts things, be sure<br>
to read <a href="http://dead-souls.net/ds-creator-faq.html#5.1">this
Creator FAQ section</a>.<br>
<br>
<br>
<a name="74"></a><span
 style="font-weight: bold; text-decoration: underline;">How does player
voting work?</span><br>
<br>
The voting system enables players to nominate and<br>
vote for class leaders. A Fighter can nominate and vote for<br>
his Fighter leader, Mages can vote for a Mage leader, etc.<br>
The nomination period usually lasts about a week, then<br>
nomination closes and voting begins. Voting ends when<br>
an arch enters the voting room (it's in Town Hall) and<br>
issues the appropriate command. See the voting room printed<br>
material for instructions.<br>
When the voting is ended, the winner becomes<br>
council member. The high council is composed of <br>
representatives (the leaders) of the classes. What kinds<br>
of authority the council should have is entirely up to<br>
you and your mud. No default powers are enabled, you'll<br>
need to code your own sets of privileges and responsibilities<br>
for your councilors.<br>
Because creators have no business meddling in the<br>
affairs of mortals, they cannot vote, regardless of their<br>
class affiliation.<br>
<br>
<br>
<a name="75"></a><span
 style="font-weight: bold; text-decoration: underline;">What are
"estates"?</span><br>
<br>
Any references to estates in Dead Souls code or<br>
documentation are artifacts of pre-1.1 Nightmare code. <br>
Estates in the Nightmare lib were player-owned areas,<br>
which were granted to players of specific rank, status,<br>
etc who could afford to buy the rights to them.<br>
Estate support in Dead Souls is planned for post 2.1.<br>
<br>
<br>
<a name="76"></a><span
 style="font-weight: bold; text-decoration: underline;">What are
"events"?</span><br>
<br>
Some things should happen regularly. Perhaps<br>
log rotation, or backing up some .o files. The events<br>
daemon, or EVENTS_D handles this. To add or remove<br>
events use the add_event() sefun. For example, to add the<br>
log rotation event, I issued this command:<br>
<br>
<span style="font-weight: bold;">eval return
add_event("/secure/daemon/log","/secure/daemon/log","RotateLogs",({
}),7200,1)</span><br>
<br>
Which said: "Every two hours, call the RotateLogs function in the log
daemon."<br>
<br>
To see what events have been scheduled, type:<br>
<span style="font-weight: bold;">events</span><br>
<br>
To remove an event from the events schedule, find its<br>
next runtime, and use it as an argument to the remove_event() sefun,<br>
like this:<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;">events</span><br>
<br>
The following events are pending:<br>
1145159511 RotateLogs Sun Apr 16 03:51:51 2006 EDT<br>
<br>
<span style="font-weight: bold;">eval return remove_event(</span></big><big
 style="font-weight: bold; font-family: courier new,courier,monospace;">1145159511)<br>
<br style="font-family: courier new,courier,monospace;">
</big><br style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;"><a name="77"></a><span
 style="font-weight: bold; text-decoration: underline;">Where does user
monitor data go?</span><br>
<br>
When you monitor someone, or if you enable<br>
GLOBAL_MONITOR, monitor data is logged into /secure/log/adm.<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="78"></a><span
 style="font-weight: bold; text-decoration: underline;">How would you
set a race to be selectable by new players?</span><br>
<br>
If the race already exists, and it is, say, kobold, type:
<br>
<span style="font-weight: bold;">removerace kobold</span>
<br>
<br>
Then see: <a href="http://dead-souls.net/ds-admin-faq.html#10">http://dead-souls.net/ds-admin-faq.html#10</a><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"><br>
<br>
</span></big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"><a name="79"></a><span
 style="text-decoration: underline;">Where is emote data kept? Can I
edit it by hand?</span></span><br style="font-weight: bold;">
<br>
Emote data is saved in /save/soul.o<br>
<br>
You must never, ever, edit an .o file. Period. It<br>
is possible to do it without corrupting data, but I do<br>
not condone it, I don't recommend it, and if you fux your<br>
mud because you did it anyway, I won't support it.<br>
<br>
If you edit an .o file, and now things don't<br>
work, it is your own fault. If you didn't back things up<br>
before editing system files, there's nothing anyone can<br>
do to retroactively save your data. <br>
<br>
<br>
<a name="80"></a><span
 style="font-weight: bold; text-decoration: underline;">What are .h and
.o files? Where are they kept?</span><br>
<br>
Files with the extension of .h are called header<br>
files. They have code or variables that are helpful when<br>
creating some things, so that an armor object uses<br>
armor_types.h to load some useful information without having<br>
to hard code it every time you make a piece of armor.<br>
These global header files are most typically found in<br>
/include or /secure/include , although local header files<br>
that are specific to a particular directory (such as<br>
header files for lib objects) are commonly found in an<br>
./include subdirectory of the given directory.<br>
<br>
Files with an .o extension are object persistence<br>
files. They contain data, not code. There are some things<br>
that happen in the lib that should persist across<br>
reboots, such as races, classes, economy, etc. You could<br>
just hard code this stuff, but what if you need to make<br>
changes? What if your economy needs to be flexible to <br>
accommodate inflation? What if you want to be able to<br>
add or remove emotes on the fly? <br>
Persistence files allow you to save data which<br>
is subject to manipulation, but which needs to be available<br>
in case the mud restarts.<br>
<br>
Because .o files tend to contain information <br>
that is structured and formatted in a very specific way,<br>
they should never be edited by hand. They are intended to<br>
be loaded and saved by objects like daemons. Monkeying<br>
around with the contents of an .o file is an excellent <br>
way to damage your mud.<br>
Another reason to avoid it is that even if you<br>
make a valid change, it's liable to be overwritten unless<br>
you fully understand the daemon that uses that file.<br>
<br>
<br>
<a name="81"></a><span
 style="font-weight: bold; text-decoration: underline;">But my friend
forgot his password! I *have* to edit his playerfile!</span><br>
<br>
Use the command: <span style="font-weight: bold;">resetpasswd</span><br>
<br>
<br>
<a name="82"></a><span
 style="font-weight: bold; text-decoration: underline;">How do I change
my mud's name?</span><br>
<br>
1) type: <span style="font-weight: bold;">admintool</span><br>
<br>
2) select the "Driver" menu option<br>
<br>
3) select the "change the MUD's name" option<br>
<br>
4) answer yes to rebooting<br>
<br>
<br>
<a name="83"></a><span
 style="font-weight: bold; text-decoration: underline;">Help! I locked
myself out!</span><br>
<br>
For UNIX administrators, it is natural to create an<br>
admin character for special admin tasks, and then use<br>
a regular character for routine stuff.<br>
There's nothing wrong with that, but if you<br>
lock the mud, you'll need to have your regular character<br>
be in either the ELDER or TEST groups in order to log<br>
in. For more information on modifying groups: <span
 style="font-weight: bold;">help admintool</span><br>
<br>
<br>
<a name="84"></a><span
 style="font-weight: bold; text-decoration: underline;">What are the
privileges associated with the groups in groups.cfg?</span><br>
<br>
<span style="text-decoration: underline;">SECURE</span> gives you 100%
admin privs to the mud.<br>
<br>
<span style="text-decoration: underline;">ASSIST</span> allows reading
to almost all files in /secure, but<br>
doesn't provide write access to those files. Assist admins<br>
do report as archp() == 1, so access to writes based on <br>
that pointer should be carefully managed. Assist admins<br>
can also read the contents of player directories. See<br>
/secure/cg/groups/read.cfg and write.cfg for more detail.<br>
<br>
<span style="text-decoration: underline;">ELDER</span> is just a nice
thing to have show up in the who list.<br>
<br>
<span style="text-decoration: underline;">TEST</span> lets the lib know
you are a test character.<br>
<br>
All members of the above four groups are permitted to log in when<br>
the mud is locked. <br>
<br>
<span style="text-decoration: underline;">INTERMUD</span> lets the
member use intermud, if RESTRICTED_INTERMUD<br>
is enabled.<br>
<br>
Any additional special groups or privileges you'll have to code
yourself.<br>
<br>
<br>
<a name="85"></a><span
 style="font-weight: bold; text-decoration: underline;">Why does the
documentation refer to LIB_ARMOUR and armour_types.h?</span><br>
<br>
The LPC documentation in the Creator's Manual was written by<br>
Descartes. I have been reluctant to make any changes to it, <br>
because first, it isn't mine, and second, deviations from the<br>
current lib are very small.<br>
<br>
In this particular case, you evidently have noted that<br>
the lib uses American spelling for "armor". The original Dead<br>
Souls distribution, version 1, and the Nightmare lib used the<br>
British spelling of "armour".<br>
Aside from finding it unnecessary and affected, I<br>
felt it was distracting and potentially confusing for coders,<br>
because it was the only word in the lib spelled this way. There<br>
were no instances of "colour" or "honour", etc. Rather than<br>
make things uniform by Britishizing them, I made them uniform<br>
by Americanizing them.<br>
To this day I don't know the reason for that original<br>
spelling. It may be that Descartes intended to make a <br>
distinction between, say, an armoury that sells things you<br>
wear, and an armory that sells things you wield.<br>
If I remember to, I'll ask him next time we talk.<br>
<br>
<br>
<a name="86"></a><span
 style="font-weight: bold; text-decoration: underline;">Where are
read/write restrictions kept?</span><br>
<br>
The global perms are listed in /secure/cfg/read.cfg<br>
and /secure/cfg/write.cfg . However, additional permissions<br>
may be available to a user based on the access privileges<br>
defined in a given adm/ subdirectory. See <span
 style="font-weight: bold;">help grant</span> for<br>
more details on that system.<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
The permissions logic goes something like this:<br>
<br>
<span style="font-weight: bold;">uid/euid/gid</span>:<br>
1) These absolutely do not work in Dead Souls. It is not a supported
security model.<br>
<br style="font-weight: bold;">
<span style="font-weight: bold;">read.cfg</span>:<br>
1) If a file/directory is not in this file, anyone can read it.<br>
2) If a file/directory is in this file, only the specified
groups/people can read it.<br>
<br>
<span style="font-weight: bold;">write.cfg</span>:<br>
1) If a file/directory is not in this file, only admins can write to it.<br>
2) If a file/directory is in this file, admins + the groups/people
specified can write to it.<br>
<br>
<span style="font-weight: bold;">grant command</span>:<br>
1) A creator may use "grant" to give read and/or write access to files
under her control.<br>
<br>
<span style="font-weight: bold;">default</span>:<br>
1) Objects in the /secure dir can arbitrarily limit access to their
data if coded to do so.<br>
2) Anything not explained by the above rules is a security policy
defined in /secure/daemon/master.c</big><br>
<big style="font-family: courier new,courier,monospace;"><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="87"></a><span
 style="font-weight: bold; text-decoration: underline;">I need to test
day/night descriptions, but I can't wait around all day.</span><br>
<br>
Type: <span style="font-weight: bold;">help ticktock</span><br>
<br>
<br>
<a name="88"></a><span
 style="font-weight: bold; text-decoration: underline;">How can I
change the default prompt? Can I make it dynamic?</span><br>
<br>
The default prompt is defined in /secure/include/config.h .<br>
<br>
In Dead Souls 2.4.1 and above, you can use the prompt command<br>
to change the default to something else, and you can even <br>
have dynamic prompts which indicate your health status, etc.<br>
Type:<br>
<br>
<span style="font-weight: bold;">help prompt</span><br>
<br>
<br>
<a name="89"></a><span
 style="font-weight: bold; text-decoration: underline;">What is
"unguarded"?</span><br>
<br>
Unguarded is the mechanism used to obviate the stack<br>
security model. Under some tightly controlled circumstances, it<br>
may be desirable to have an object access privileged data, even though<br>
an unprivileged object is in the command stack.<br>
<br>
When the unguarded() sefun is called, the object containing<br>
the sefun overrides the security permissions on any other object<br>
in the stack, allowing, for example, an unprivileged object <br>
to read from your home directory.<br>
<br>
See <span style="font-weight: bold;">man unguarded</span> for syntax
and usage, and examine<br>
files like /secure/obj/snooper.c for examples. Use with <span
 style="font-weight: bold;">EXTREME</span> caution.<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="90"></a><span
 style="font-weight: bold; text-decoration: underline;">Is intermud
communication secure?</span><br>
<br>
Not in the slightest. Here's how it works:<br>
<br>
<span style="font-weight: bold;">1)</span> Whoever is running the
router has 100% access to every bit<br>
of communication that happens across that intermud network. All<br>
messages are plaintext, and although I personally can promise<br>
I don't read "private" messages, there is no way for you to<br>
be sure I'm not lying.<br>
<br>
<span style="font-weight: bold;">2)</span> All muds connected to an i3
router can hear anything that<br>
is said on public channels. <br>
<br>
<span style="font-weight: bold;">3)</span> Any admin on any mud has
100% access to the i3 packet data<br>
that comes in and out, meaning they can listen to "private" tells<br>
between someone on that mud and someone on another mud.<br>
<br>
<span style="font-weight: bold;">4)</span> Nobody on any client mud is
able to "sniff" or "snoop" data from<br>
tells between other muds. If Alice@AlphaMud and Bob@BravoMud are<br>
having a heated "tell" discussion, Carol@CharlieMud can't listen in,<br>
even if she's an admin on her mud. However, Dave@DeltaMud is<br>
the admin on the i3 router mud, and he can "hear" everything.<br>
<br>
<span style="font-weight: bold;">5)</span> Local channels (cre, admin,
newbie, etc) do not get broadcast<br>
to the i3 router. There is one exception to this. Dead Souls 2.0r22<br>
had a bug that did just this thing. This bug is not<br>
seen in earlier versions, and later versions have been fixed to<br>
prevent this. However, any local admin has full access to any<br>
local channel.<br>
<br>
<span style="font-weight: bold;">6)</span> Since this is all plaintext,
anyone at all along the<br>
network stream (you ISP, their ISP, etc) can listen in,<br>
whether at the intermud point, or at the point where you<br>
or your message target telnetted into their mud.<br>
<br>
<br>
Therefore: do not tell secrets across intermud.<br>
<br>
<br>
<br>
<a name="91"></a><span
 style="font-weight: bold; text-decoration: underline;">What are some
do's and don'ts?</span><br>
<br>
There aren't too many, but they tend to<br>
be important, so try to follow these guidelines:<br>
<br>
- Do not allow anyone other than full admins (people in<br>
the SECURE group of /secure/cfg/groups.cfg) to edit<br>
/lib files. Things like /lib/player.c and such must only<br>
ever by edited by SECURE folks, because otherwise someone<br>
can use that editing to elevate themselves to full<br>
admin privileges. Do not mess with groups.cfg to let<br>
normal creators edit /lib files, do not modify the mud to<br>
allow write access there. If you need help with those files,<br>
hire someone you trust to be full admin. Or simply<br>
have folks submit code to you that you review before you<br>
drop it into /lib yourself. By default, neither normal<br>
creators nor assistant admins can write to /lib, and this<br>
default is the way you should leave it.<br>
<br>
- Don't mess with /realms/template/ unless you know exactly<br>
what you're doing. Breaking anything there will hose up<br>
new creators. The same goes for /secure/sefun/make_workroom.c<br>
<br>
- Don't be too adventurous with your admin character. I've<br>
had to change admin tools so people can't remove themselves<br>
from admin groups, and so that people can't demote themselves<br>
from creator to player...not because I thought maybe someone<br>
might do it, but because people <span
 style="font-weight: bold; font-style: italic;">have</span> done it. If
you play games<br>
with your admin's body, gender, stats, whatever, it probably won't be<br>
fatal, but then, it might. Don't experiment on your admin. Use<br>
a test character.<br>
<br>
- Always always always back up any lib files you mess<br>
with. The <span style="font-weight: bold;">bk</span> and <span
 style="font-weight: bold;">restore</span> commands are your best
friends.<br>
<br>
- Don't let just anyone off the street become Creator. You<br>
need to know and trust your creators.<br>
<br>
- Don't let a week go by without a full backup of your mud.<br>
<br>
- Don't use color codes in your mud name. It makes people on<br>
intermud cranky.<br>
<br>
- Don't edit files that end in ".o". Those are data files,<br>
and are very very easy to corrupt if you edit them by hand,<br>
possibly damaging your mud.<br>
<br>
- Don't assume it's anyone's responsibility but your own <br>
to teach you LPC and how to use Dead Souls.<br>
<br>
- You should avoid changing your lib name unless you have<br>
a good reason for doing so. Changing from "Dead Souls" to<br>
"MyLib" or whatever probably seems like a fun thing to do, but<br>
makes you look like you're trying to claim credit that is not due.<br>
People really do notice, and really can tell. It makes you look bad.<br>
Keep in mind that most of what is currently in Dead Souls<br>
was written exclusively by me<a href="#91a"><span
 style="font-weight: bold;">*</span></a>, and yet I have not changed
the name.<br>
Similarly, unless you're actually branching MudOS, don't change<br>
the name that is reported by it. Leaving the driver and lib names<br>
alone is perhaps the one way you have to demonstrate your<br>
gratitude to the dozens of developers that made them available<br>
to you.<br>
<br>
<small><small><a name="91a"></a><span style="font-weight: bold;">*</span>
After removing docs from each, the uncompressed lib material<br>
in DS1.1 is about 5 megs contained in about 1000 files and<br>
directories, and DS2.4 is about 12 megs contained in about 2300<br>
files and directories. </small></small><br>
<br>
<br>
<a style="font-weight: bold; text-decoration: underline;" name="101"></a><span
 style="font-weight: bold; text-decoration: underline;"><a name="92"></a>Is
DS2 in any way suited to create a non-English mud from/with it?</span><br>
&nbsp;<br>
<span style="font-weight: bold;">First the yes:</span> There is at
least one mud that I know of that uses Dead<br>
Souls that is in Russian. I think they might have had some trouble using<br>
the Cyrillic alphabet, but I think they overcame it.<br>
<br>
For a while there was a Dead Souls mud in Korean. I don't<br>
know the name of it, because I never understood anything they said.<br>
As far as I know, they are not running today.<br>
<br>
There's very little about the lib that is incompatible with a different<br>
language. You can use typical ascii characters, meaning you can<br>
use accents, and so on. You room descriptions and messages can be<br>
in most languages you want that you can express in ascii, and
(apparently)<br>
even some that you can't.<br>
<br>
<span style="font-weight: bold;">Now the no:</span> The biggest
obstacle to making Dead Souls international<br>
is the parser. The "natural language parser" is in the driver, not the
lib, and<br>
it is optimized for English. English is an "analytic" language, so that<br>
word order dictates the meaning of a sentence. With German, a
"synthetic"<br>
language, word order is less important than the pre/in/suffix inflection<br>
and pronoun/noun declination. This kind of sophistication is completely<br>
beyond what the MudOS parser is designed to do.<br>
This means that a Dead Souls mud in German would have a hard time<br>
being 100% grammatically correct in its parsing system.<br>
<br>
<span style="font-weight: bold;">However...</span><br>
<br>
If you're willing to make compromises with grammar, it can be done to<br>
a certain extent. For example, If you make "mein", "meiner", "meine",
"meines",
"meinen",<br>
and "meinem" all applicable to all possessive situations, then it can
work fine.<br>
To a grammar purist this is a horrible thing to do, but it is available
as an option,<br>
if you're willing to do some rewriting of the mudlib.<br>
<br>
German and Russian are statistical outliers, though. Many European<br>
languages lack noun cases, and for them, using Dead Souls would be much<br>
easier, in terms of the parser. You still have to deal with
agglutination,<br>
though, such as single-word intransitives or reflexives.<br>
<br>
So, the summary answer is:<br>
<br>
* Yes, you can use Dead Souls with non-English languages for<br>
descriptions and messages.<br>
<br>
* Depending on the language, you will have to make grammar compromises<br>
if you intend to use the MudOS parser for command processing.<br>
<br>
* To convert properly Dead Souls to another language is a non-trivial
task that<br>
involves reworking the master object, various command/verb system
objects, and<br>
possibly the MudOS parser to a degree. It *is* possible, but it's
definitely not<br>
a project for the faint of heart.<br>
<br>
* You can avoid this by not using the MudOS parser, and using the<br>
old-style command system, which depends on add_actions and command<br>
files to accomplish the job of parsing. This also requires some
substantial<br>
lib coding. It is more code you'd have to write, but it would be<br>
less advanced and complicated than refitting the natural language
parser.<br>
<br>
* I enjoy the study of languages and grammar, so I'd be delighted to
help<br>
you if you decided to take on that project. However, my role would be<br>
of a "helper". I cannot take on the burden of doing the majority of the<br>
grunt work code for someone else's project.<br>
<br>
* I wish I could tell you "Yes, and it's easy." The answer though, is
"Yes, but it's hard."<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<a name="93"></a><span
 style="font-weight: bold; text-decoration: underline;">I keep losing
my intermud connection, and sometimes I'm half connected</span><br
 style="font-weight: bold; text-decoration: underline;">
<br>
This happens most frequently when using a wireless connection.<br>
Intermud is apparently not at all tolerant of the casual manner in which<br>
many wireless connections work, and as a result your intermud<br>
connectivity will likely suffer. Perhaps this is old-school of me,<br>
but I think it's reasonable to suggest that you run your mud on<br>
a land-line network connection.<br>
<br>
Another source of this problem is if you're running off of<br>
a home broadband connection. Some of these DSL or cable modems change<br>
IP addresses very frequently, and your connection is interrupted during<br>
those changes. If your connection is abruptly terminated and you come<br>
back with a different IP, the intermud router may not handle this<br>
gracefully. Perhaps this is old-school of me, but I think it's<br>
reasonable to suggest that you run your mud on a static IP.<br>
<br>
Finally, I have seen some home firewall/router devices that<br>
have an unconscionably short timeout for idle connections. There is<br>
usually enough intermud traffic that your conenction will receive a<br>
packet within five minutes, but if your timeout interval appears to
be<br>
shorter than that, you can tweak your intermud ping interval in<br>
Dead Souls 2.5a19 and above by typing: <span style="font-weight: bold;">mudconfig
pinginterval 120</span><br
 style="font-family: courier new,courier,monospace;">
</big><big style="font-family: courier new,courier,monospace;"></big><big
 style="font-family: courier new,courier,monospace;"><br
 style="font-family: courier new,courier,monospace;">
<span style="font-family: courier new,courier,monospace;"> That will
shorten your intermud ping interval to 2 minutes,</span><br
 style="font-family: courier new,courier,monospace;">
<span style="font-family: courier new,courier,monospace;">which should
keep most such aggressive timeouts from happening.<br>
It's probably not a good idea to lower your interval below 2 minutes,<br>
as your mud may wind up getting stuck in an i3 reconnect loop.<br
 style="font-family: courier new,courier,monospace;">
</span></big><big style="font-family: courier new,courier,monospace;"><br>
Dead Souls muds below 2.5a19 may need to manually edit PING_INTERVAL<br>
in /secure/include/config.h or /secure/daemon/ping.c and reboot.<br>
<br style="font-family: courier new,courier,monospace;">
</big><big style="font-family: courier new,courier,monospace;"><br
 style="font-family: courier new,courier,monospace;">
<a style="font-family: courier new,courier,monospace;" name="94"></a><span
 style="font-weight: bold; text-decoration: underline; font-family: courier new,courier,monospace;">I
heard I can run my old TMI-2/Nightmare 3/Skylib/Lima code on Dead
Souls. Is that true?</span><br
 style="font-family: courier new,courier,monospace;">
<br style="font-family: courier new,courier,monospace;">
<span style="font-family: courier new,courier,monospace;"> Yes and no.
Please read </span><a
 style="font-family: courier new,courier,monospace;"
 href="http://dead-souls.net/news.html#25aug06">this announcement</a><span
 style="font-family: courier new,courier,monospace;"> for the details.</span><br
 style="font-family: courier new,courier,monospace;">
<br style="font-family: courier new,courier,monospace;">
<br style="font-family: courier new,courier,monospace;">
<br style="font-family: courier new,courier,monospace;">
<a style="font-family: courier new,courier,monospace;" name="95"></a><span
 style="font-weight: bold; text-decoration: underline; font-family: courier new,courier,monospace;">Why
is the version of Dead Souls 2 on Sourceforge different from the one on
dead-souls.net?</span><br
 style="font-family: courier new,courier,monospace;">
<br style="font-family: courier new,courier,monospace;">
<span style="font-family: courier new,courier,monospace;"> It's a
licensing thing. Sourceforge insists on only having Open Source</span><br
 style="font-family: courier new,courier,monospace;">
<span style="font-family: courier new,courier,monospace;">stuff on
their site, so the version of Dead Souls you can download there is Open
Source.<br>
<br>
Strictly speaking it's "public domain". For more information on that<br>
version, see: </span></big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-family: courier new,courier,monospace;"></span></big><big
 style="font-family: courier new,courier,monospace;"><a
 href="http://dead-souls.net/ds-II-faq.html">http://dead-souls.net/ds-II-faq.html</a></big><br
 style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;"><span
 style="font-family: courier new,courier,monospace;"></span><br
 style="font-family: courier new,courier,monospace;">
<span style="font-family: courier new,courier,monospace;"></span><span
 style="font-family: courier new,courier,monospace;">If all
you're looking to do is run a mud, use the </span><a
 style="font-family: courier new,courier,monospace;"
 href="http://dead-souls.net/code/dead_souls.zip">latest version</a><span
 style="font-family: courier new,courier,monospace;"> from the <br>
Dead Souls site. </span><span
 style="font-family: courier new,courier,monospace;">Mud admins don't
need to worry about licensing issues. Only <br>
those looking to distribute </span><span
 style="font-family: courier new,courier,monospace;">or fork DS should
be concerned with the licensing.<br>
<br>
<span style="font-weight: bold;">Short answer</span>: If you don't care
what license you use, then you should<br>
use the most featured and most current stable version, which is: </span></big><big
 style="font-family: courier new,courier,monospace;"><a
 style="font-family: courier new,courier,monospace;"
 href="http://dead-souls.net/code/dead_souls.zip">http://dead-souls.net/code/dead_souls.zip</a><br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-family: courier new,courier,monospace;"></span><big
 style="font-family: courier new,courier,monospace;"><br>
<small><br>
<a name="96"></a><span
 style="font-weight: bold; text-decoration: underline;">Good heavens!
All I wanted to do was change combat, and it is so complicated!</span><br>
<br>
This is somewhat related to <a href="ds-admin-faq.html#72">question 72</a>,
"Will changing XYZ be hard?". Some<br>
folks have super-specific ideas about how their mudlib should look,
and, for example,<br>
want nothing to do with magic, or limbs, or have a problem with combat,
etc. <br>
I think you'll find Dead Souls 2 can be molded into whatever you want.<br>
<br>
However, I would suggest the if you're going to be spending more than<br>
50% of your time ripping things out of this lib, it might be that this<br>
lib doesn't actually suit you. You might be happier with TMI-2,<br>
for example, or Lima,
or LPUn, etc. You can choose from a number of<br>
libs from the LPMuds.net download page: <a
 href="http://lpmuds.net/downloads.html">http://lpmuds.net/downloads.html</a>
<br>
<br>
If you're going to stick with DS2, though, then it's time for a
re-assessment.<br>
You're looking to modify big, complex systems in a codebase that's not<br>
that familiar to you. The amazing thing is how far you've gotten<br>
in so short a time, that you're up for haxing at the combat system. But<br>
I'd like to make sure your expectations are set correctly: you <span
 style="font-style: italic;">are</span> messing<br>
with complex systems fundamental to the operation of the mud. Of<br>
course it'll be hard, until you're at a higher level of proficiency.<br>
<br>
So yes, changing big things is big work. You might want to stop<br>
and think about whether this really is the lib for you, if you're<br>
spending most of your time pulling stuff out. Or you might want to<br>
slow down and work on modifying simpler objects and systems before<br>
starting to chew on player object inheritables.<br>
<br>
Just a thought.<br>
<br>
<br>
</small></big></big><big
 style="font-family: courier new,courier,monospace;"><a name="97"></a><span
 style="font-weight: bold; text-decoration: underline;">Editing in
Windows is fine and call_out()'s are great. Your advice sucks!</span><br>
<br>
&nbsp;&nbsp;&nbsp; Astute or adventurous readers may have noticed that
some of my<br>
statements on the faq are only true up to a point. For example, if you<br>
have a proper editor, and know what you're doing, there's nothing<br>
inherently wrong with editing an .o file.<br>
<br>
&nbsp;&nbsp;&nbsp; Similarly, a call_out() here or there isn't wrong,
and in fact is<br>
the only way to do certain things elegantly (or at all).<br>
<br>
&nbsp;&nbsp;&nbsp; The reason for the stern warnings is that these, and
other subjects,<br>
involve judgment calls that a novice is not in a position to make. Are<br>
you 100% sure that windows editor won't add dos formatting? Can you<br>
be certain that your call_out won't bring the mud to its knees?<br>
<br>
&nbsp;&nbsp;&nbsp; Expert coders and admins can determine their risk
level based on<br>
experience. Until newcomers gain that experience, I try to dissuade<br>
them from risky behavior, because getting tripped up in the starting<br>
gate is no way to win a race.<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="98"></a><span
 style="font-weight: bold; text-decoration: underline;">I keep hearing
that Dead Souls can do this or that, but I'm trying and can't.</span></big><br>
<big style="font-family: courier new,courier,monospace;"><br>
&nbsp;&nbsp;&nbsp; It may be that you downloaded the older, GPL version
of<br>
Dead Souls. The <a href="http://dead-souls.net/code/dead_souls.zip">latest,
non-GPL version</a> may have the feature<br>
you're looking for.<br>
<br>
&nbsp;&nbsp;&nbsp; When I refer to the latest version, I mean the latest<br>
stable release. Cutting-edge "alpha" versions can be downloaded,<br>
which include the <a href="http://dead-souls.net/RELEASE_NOTES">absolute
latest stuff</a> I've been working on.<br>
It may be that the feature you're talking about is only available<br>
on the alpha version, and hasn't been included in a stable<br>
release yet.<br>
<br>
&nbsp;&nbsp;&nbsp; You can <a href="http://dead-souls.net/code/alpha/">download
the alpha</a> and run it, but you do so at your<br>
own risk. Alpha versions have that name for a reason: they aren't<br>
fully tested and are likely to have bugs.<br>
<br>
&nbsp;&nbsp;&nbsp; Alpha versions are numbered differently from stable
releases.<br>
For example, Dead Souls 2.1 alpha 8 is roughly equivalent to <br>
(unreleased) Dead Souls 2.1 release 41. This is because the <br>
alpha version changes less frequently than the "internal"<br>
release.<br>
<br>
<br>
<a name="99"></a><span
 style="font-weight: bold; text-decoration: underline;">You appear to
have a FAQ for everything!</span><br>
<br>
&nbsp;&nbsp;&nbsp; I'm not kidding when I call these FAQ's. These
questions<br>
really do get asked frequently. <br>
<br>
&nbsp;&nbsp;&nbsp; When you start using Dead Souls, when you ask a
question<br>
on the DS line, you will more often than not get a FAQ url<br>
from me. This is normal, and is meant to encourage you to<br>
review the docs on your own.<br>
<br>
&nbsp;&nbsp;&nbsp; If you find that most of your questions <br>
have FAQ's for answers, you should seriously consider changing<br>
the way you're going about things. When you're not sure<br>
about something, check the FAQ's first. That's what <br>
they're there for.<br>
<br>
&nbsp;&nbsp;&nbsp; Eventually, if all your questions are answered by<br>
existing documentation, you might find that you get fewer<br>
and fewer responses from people, as they start <a
 href="http://dead-souls.net/code/ds2.8.4/lib/cmds/players/earmuff.c">tuning<br>
you out</a>. Remember that most people refer to the docs:&nbsp; <br>
the <a href="http://dead-souls.net/code/ds2.8.4/lib/doc/">help and
manual files</a>, command help messages,<br>
as well as the <a href="http://dead-souls.net/ds-admin-faq.html">admin</a>,
<a href="http://dead-souls.net/ds-creator-faq.html">creator</a>, <a
 href="http://dead-souls.net/debugging.html">debugging</a>, and <a
 href="http://dead-souls.net/ds-faq.html">general</a><br>
faqs. There's also the in-game <a
 href="http://dead-souls.net/doc/hbook/">player's handbook</a>, <a
 href="http://dead-souls.net/doc/manual/">creator's<br>
manual</a>, and <a href="http://dead-souls.net/doc/guide/">admin guide</a>,
as well as web based <a href="http://dead-souls.net/example.html">examples</a><br>
and <a href="http://dead-souls.net/editor.html">tutorials</a>. There
is also a <a href="http://lpmuds.net/forum/">Dead Souls support forum</a><br>
which is searchable.<br>
<br>
&nbsp;&nbsp;&nbsp; There is a ton of documentation for DS, and most
people<br>
consult it regularly. If you keep asking questions that<br>
are explicitly answered in docs, you may find yourself<br>
in the awkward position of not having anyone listening<br>
to you when you ask for something *not* documented.<br>
<br>
&nbsp;&nbsp;&nbsp; This <span
 style="font-weight: bold; font-style: italic;">doesn't</span> mean
"Don't bother us with your newbieness".<br>
<br>
&nbsp;&nbsp;&nbsp; It means "First <a
 href="http://www.jargon.net/jargonfile/r/RTFM.html">RTFM</a>. If it's
not in there, ask like<br>
someone who has tried to find the answer, not like a <a
 href="http://en.wikipedia.org/wiki/Newbie">lazy<br>
person who wants to be tutored</a>."<br>
<br>
&nbsp;&nbsp;&nbsp; A very detailed explanation of the reason for this<br>
is at <a href="http://www.catb.org/%7Eesr/faqs/smart-questions.html">http://www.catb.org/~esr/faqs/smart-questions.html</a><br>
(<span style="font-weight: bold;">NOTE:</span> The people that run that
page have nothing to do<br>
with Dead Souls. Do not try to ask them Dead Souls questions).<br>
<br>
I strongly urge you to read that entire document. If you've<br>
never read it before, it will help you both on DS channels<br>
and pretty much anywhere else where experts are available <br>
for questions. I promise there will be benefit from <br>
reading it.<br>
<br>
<br>
<a name="100"></a><span
 style="font-weight: bold; text-decoration: underline;">If I XYZ, will
that work?</span><br>
<br>
Try it and see. One of the drawbacks to having exhaustive<br>
documentation is that folks can get the impression there's<br>
an example of every test case. As with any coding (programming)<br>
environment, you'll need to put in a lot of trial and<br>
error to learn. If it doesn't work, and it's not documented,<br>
go to the <a href="http://lpmuds.net/forum/">Dead Souls forum</a>,
tell us what you did, where you <br>
looked, and what you expected.<br>
<br>
<br>
<a name="102"></a><span
 style="font-weight: bold; text-decoration: underline;">Hey you skipped
question 101!</span><br>
<br>
Yeah I goofed the numbers and now people are using #101 for<br>
something else. Oh well.<br>
<br>
<br>
<a name="103"></a><span
 style="font-weight: bold; text-decoration: underline;">You are not
taking my bug report very seriously.</span><br>
<br>
On the contrary. I am fanatically dedicated to making and keeping<br>
Dead Souls the very best LP lib out there. As you spend more time<br>
getting acquainted with the DS community and how things work,<br>
you will see that I am deadly serious about bugs and they<br>
usually get addressed quickly, if they prevent functionality.<br>
At a minimum, legitimate bugs end up on my .plan.<br>
<br>
I know DS2 has bugs. I'm not under the illusion it's perfect,<br>
or <a href="http://dead-souls.net/ds-admin-faq.html#55">that I'm a
coding god</a>.<br>
<br>
However, I *do* get a lot of reports, and I have to prioritize<br>
them. DS2 doesn't put food on the table for my family,<br>
or keep the rain off our heads, so you'll need to keep in mind<br>
that, as special and wonderful a person as you are, your<br>
coding confusion is sadly not my personal emergency. <br>
<br>
Whether it's a critical security flaw or a typo in a<br>
file's header, I can promise you I *will* address your problem, <br>
unless another member of the community gets to it first. You <br>
may have to just be patient.<br>
<br>
Another reason you may feel I'm not addressing your problem<br>
is that you may not actually have a problem. Specifically,<br>
if you are a new admin, and something doesn't work the way<br>
you think it should, I advise you not to immediately<br>
regard it as a bug. It may well *be* a bug, but assuming it<br>
is so is not helpful. Consider the following scenarios:<br>
<br>
<span style="text-decoration: underline;">Scenario 1a:</span><br>
Noobulator@LeetFooMUD &lt;ds&gt; BUG!! I can't see what's in my toy
chest!!1!<br>
Cratylus@Dead Souls Demo &lt;ds&gt; k. thx.<br>
<br>
<span style="text-decoration: underline;">Scenario 1b:</span><br>
</big><big style="font-family: courier new,courier,monospace;">Noobulator@LeetFooMUD
&lt;ds&gt; I type "l chest" but I can't see what's in there.<br>
</big><big style="font-family: courier new,courier,monospace;">Cratylus@Dead
Souls Demo &lt;ds&gt; try: look in chest<br>
<br>
Another common source of "bug reports" is what can charitably<br>
be called operator error. For example:<br>
<br>
<span style="text-decoration: underline;">Scenario 2:</span><br>
</big><big style="font-family: courier new,courier,monospace;">Noobulator@LeetFooMUD
&lt;ds&gt; lol the schoolhouse is broken lol<br>
</big><big style="font-family: courier new,courier,monospace;">Cratylus@Dead
Souls Demo &lt;ds&gt; works for me<br>
</big><big style="font-family: courier new,courier,monospace;">Noobulator@LeetFooMUD
&lt;ds&gt; well, it's bugged. I get a million errors when I enter<br>
</big><big style="font-family: courier new,courier,monospace;">Cratylus@Dead
Souls Demo &lt;ds&gt; i can't reproduce the problem on my test muds.<br>
<br>
Ususally in such a scenario, it turns out that the person<br>
was *sure* they didn't change anything...and later remember <br>
they just took out this one line they didn't like from the<br>
code. Or perhaps they removed the "dwarf" race, and so the<br>
schoolhouse can't load because it has a dwarf npc in it. Or<br>
maybe they....etc etc etc.<br>
<br>
If you report a bug, and you get something like this from me:<br>
<br>
"I can't reproduce your problem."<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
It means I tried to get the same results, and couldn't.<br>
You can interpret that as meaning that you've either<br>
caused the problem yourself, or haven't given me<br>
enough information to be able to test what you're<br>
talking about.<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
If you don't elaborate further, and you don't post your code and<br>
error messages on the forum, then I'll assume you're going<br>
to track down your coding mistake on your own.<br>
<br>
This doesn't mean I don't like you, or that I think you're<br>
a loser, or that I don't care about bugs. It means I can't do<br>
anything useful with the information you've given me. If<br>
you can provide me with enough information so that I<br>
can reproduce your problem, then I can work on fixing it.<br>
Otherwise, what can I do?<br>
<br>
I would also ask you to be as open-minded as you would<br>
like me to be. It isn't easy for me to be nice and polite...<br>
I've actually a rather abrasive personality by default. If<br>
I don't know you and I'm being polite to you, the chances are <br>
that I'm really making an effort. The chances that you're<br>
asking me something I've never heard, or reporting something<br>
I'm unaware of, are small, if you are a new admin. If my<br>
response is not to your liking (for example "check the Creator FAQ",<br>
or "read the Player's Handbook"), getting hostile and defensive<br>
with me won't help anything. Given how long I've been working<br>
on this code, it's very likely that I've given you<br>
extremely good advice, out of a genuine desire to have you succeed.<br>
If you react in an adversarial manner, you may wind up<br>
missing the technical usefulness of what I've said, and<br>
discourage me from responding promptly to you in the future.<br>
<br>
And if it happens that I *am* wrong, which occurs frequently<br>
enough, then simply following my instructions and explaining to<br>
me how they didn't work is a perfect way of showing me my mistake.<br>
<br>
<br>
<a name="104"></a><span
 style="font-weight: bold; text-decoration: underline;">Dude. Just
answer my question. It's just one question, ffs.</span><br>
<br>
If there's one thing that fills me with dread it's the<br>
prospect of having to RTFM for software I'm totally clueless<br>
about. Technical people often are terrible docwriters, and it<br>
can be a real challenge to tease out the information you need.<br>
<br>
In fact, sometimes it's necessary to understand what's in a<br>
manual before you can read it, because of the level of complexity.<br>
<br>
So I sympathize with you. Looking at a pile of documentation<br>
99% of which you don't understand is daunting, and I truly<br>
appreciate that fact, because I've been there.<br>
<br>
So I totally grok when you say "Look, please just tell me how<br>
to eventNarfle the garthak(). Ok?" I feel it, man. I get you.<br>
<br>
What I want you to understand is that when I tell you to RTFM,<br>
I'm *not* giving you the brush-off because I like it. I'm<br>
doing it because to you it's one little question. To me, it's<br>
Creator FAQ #X, which I've answered 24 times before, and for<br>
which I sat down and wrote out an excruciatingly detailed<br>
explanation. <br>
<br>
Take a look at this FAQ, and the others. There are literally<br>
hundreds of entries, all of them written by me, in a way as<br>
clear as I could make it. Take a look at the dozens of chapters<br>
in the Admin Guide, Player's Handbook, and Creator's Manual.<br>
That stuff didn't write itself.<br>
<br>
I didn't go through the laborious process of all that doc<br>
work so that I could then do it over again every time someone<br>
doesn't feel like doing a text search on the FAQ for eventNarfle.<br>
<br>
I'm not saying I'm too good to waste my time on you. I'm saying<br>
I *HAVE* spent the time, I *did* make the effort, and I need<br>
you to make just a little effort of your own as well.<br>
<br>
<br>
<a name="105"></a><span
 style="font-weight: bold; text-decoration: underline;">Is it possible
to upgrade to alpha without killing everything I've done?</span><br>
<br>
Probably. <br>
<br>
I have been asked whether people can upgrade from the stable<br>
release to the alpha release, and my answer usually is something<br>
along those lines. "I imagine so."<br>
<br>
And if asked how, I'll typically say something like "very carefully."<br>
<br>
The reason is that I do not encourage people to "upgrade" to <br>
an alpha version. Alpha is by definition a rough draft, lightly<br>
tested in new functionality, and unstable in the sense that<br>
new alphas come out often. <br>
<br>
I do not put out alpha patches, and I do not make it easy to move<br>
from a stable release to an alpha release. This is because if I<br>
did make it easy, most people would do it, even beginners. This<br>
would be problematic, because if they then run into an alpha bug,<br>
they have to hear this from me: <br>
<br>
"Well, yeah. Alpha has some bugs. I'll get to that one eventually."<br>
<br>
And then people would get all gripey, or push me to fix it,<br>
etc, and I wouldn't like that. The point of the stable release<br>
is that it's stable. The point of alpha is that it's a testing<br>
version of new stuff. If you want to go alpha, that's fine with<br>
me, but you'll need to be experienced enough to do it on your own.<br>
<br>
I actually do want people to run alpha so that I can get<br>
bugreports. But I don't want people running their main production<br>
muds in alpha, because I will not be making commitments about<br>
when bugfixes happen. I also don't want total newbies using<br>
alpha, because I don't want to set them up for disappointment<br>
when I don't treat their bugreport with extreme dispatch.<br>
<br>
So yes...it's a bit elitist of me, but for good reason. If you're<br>
unsure about being able to safely upgrade to alpha from your<br>
stable release...then don't.<br>
<br>
If you do it and screw up, restore from backup. You did back up<br>
first, right?<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="106"></a><span
 style="font-weight: bold; text-decoration: underline;">How do I start
an area?</span><br>
<br>
In Dead Souls, a set of related objects, creatures, and rooms that<br>
add up to the creative vision of a builder is called a "domain". <br>
It's the same thing as what other codebases refer to as an "area".<br>
The terms are used interchangeably in the DS community.<br>
<br>
Dead Souls domains are comprised of a bunch of LPC files that live<br>
in a specific directory. If the domain is to be called UlTiMaTe DBZ
PWNAGE<br>
then that directory (aka "folder") might be called /domains/dragonballz
.<br>
<br>
To create that domain, you can use the <span style="font-weight: bold;">domaincreate</span>
command, like so:<br>
<br>
<span style="font-weight: bold;">domaincreate dragonballz</span><br>
<br>
This will generate some standard directories and a start room for<br>
the domain. At that point you can assign a domain admin with the<br>
domainadmin command. For more info:<br>
<br>
<span style="font-weight: bold;">help domaincreate</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">help domainadmin</span><br>
<br>
<br>
<a name="107"></a><span
 style="font-weight: bold; text-decoration: underline;">I don't want to
use a cookie-cutter codebase</span><br>
<br>
So, this one time, these guys were checking out Dead Souls, and<br>
one of them was seriously evaluating it, and his buddy was basically<br>
coming up with reasons why some other lib was better...no matter<br>
what. For example, the doubter guy was like "feh we don't want<br>
a medieval mud", to which I replied "check out the firearms<br>
code", and the reply was "lol, we have our own". You know, a<br>
total no win sort of deal.<br>
<br>
And then the doubter guy said something that got me thinking.<br>
Among his objections was one that I didn't quite understand.<br>
<br>
"We don't want a cookie-cutter lib," he said.<br>
<br>
Now, the lib he was advocating was no more or less cookie cutter<br>
than DS, in my opinion, so it's not like I was dazzled by the<br>
argument, so much as I was confused by the premise. Just what<br>
the heck does "cookie cutter" mean?<br>
<br>
<span style="font-weight: bold; font-style: italic;">Cookie cutter as a
bad thing:</span><br>
<br>
I think what people sometimes mean is that they don't want a mud<br>
that looks like every other mud. Why bother logging into <br>
LeetDikuHeavilyModifiedMud When DikuHighlyLeetCustomizedMud is <br>
exactly the same, except the race and skill names are different?<br>
<br>
Similarly, there are a few dozen new Dead Souls muds out there.<br>
They all mostly look the same...why not choose something that<br>
isn't like Everyone Else?<br>
<br>
<span style="font-weight: bold; font-style: italic;">Cookie cutter as a
good thing:</span><br>
<br>
I would suggest that there are some things for which "cookie<br>
cutter" as a pejorative term is of limited impact. For example,<br>
operating systems and air conditioners. There are things that,<br>
when acquired, aren't acquired for their uniqueness. They are<br>
acquired for their suitability to a specific application. <br>
<br>
In this sense, cookie cutter basically means widely adopted, and<br>
from the standpoint of someone just trying to get a specific job<br>
done, it is an advantage that there is wide adoption of what<br>
you're working on.<br>
<br>
<span style="font-weight: bold; font-style: italic;">Where Dead Souls
fits in:</span><br>
<br>
* A codebase distribution is, necessarily, cookie cutter. It's<br>
a set of frameworks, presumably standardized during development,<br>
that are the same for everyone when they first get it. From<br>
this perspective, anything that you didn't 100% code yourself is<br>
cookie cutter when you download it.<br>
<br>
* If you download a codebase and then just run it with no modifications,<br>
then the problem in "originality" isn't the codebase, it's you.<br>
<br>
* Dead Souls includes a large (perhaps overlarge) amount of<br>
rooms, creatures, objects, armor, and weapons in the stock distribution.<br>
When you download and run it, you basically have a working mud with<br>
quests and pubs and whatnot.<br>
<br>
<span style="text-decoration: underline;">YOU ARE NOT SUPPOSED TO USE
THAT STUFF AS YOUR MUD</span><br>
<br>
Those are examples. They are sample areas. If your mud uses the sample<br>
areas, they should be one or more of the following<br>
<br>
A) Temporary, while you're learning the lib<br>
B) A joke<br>
C) Not the areas new players see<br>
<br>
If you make no changes to the sample areas and present them to new<br>
players as a mud, then yes, you have a cookie cutter mud, and you<br>
really might as well just shut down, because only your friends will<br>
log on to play, and not for very long.<br>
<br>
I think that the problem is that people see this large amount of<br>
example material and think that they have to use it in their mud. If it
<br>
were so, then that would be sad and would doom every Dead Souls mud to
be<br>
exactly like every other.<br>
<br>
Instead, your mud can have a Roman Empire theme, with no hint of<br>
the stock areas in sight when a player logs in. Just the robe and<br>
sandals they wear and the classical city they must explore. That's<br>
actually been done, by a mud called, aptly enough, <a
 href="telnet://209.209.80.36:9999">Ancient Rome</a>.<br>
<br>
Nothing prevents you from having your new players launched into<br>
space the moment they log in, or find themselves suiting up for<br>
a dive into Kaminoan oceans. It's a mud *codebase*, not a mud. <br>
<br>
Make it your own.<br>
<br>
<br>
<a name="108"></a><span
 style="font-weight: bold; text-decoration: underline;">How do I make
my new area the default domain where new people to arrive?</span><br>
<br>
<span style="font-weight: bold;"></span><span style="font-weight: bold;">1)</span>
In your new domain, make
sure that the room/ directory contains (working) rooms<br>
with the following names:<br>
<br>
void.c<br>
death.c<br>
freezer.c<br>
furnace.c<br>
pod.c<br>
wiz_hall.c<br>
start.c<br>
<br>
See the rooms in /domains/default/room to see what these rooms do and
how they work.<br>
The domaincreate command generates these rooms by default.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;">2)</span> Use the mudconfig command with
the defaultdomain subcommand. If your new<br>
default domain is </big><big
 style="font-family: courier new,courier,monospace;">/domains/dragonballz,
you would type:<br>
<br>
<span style="font-weight: bold;">mudconfig defaultdomain </span></big><big
 style="font-family: courier new,courier,monospace; font-weight: bold;">/domains/dragonballz</big><br>
<big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold;">3)</span> reboot (In theory you can do
this without rebooting, but the instructions would be longer)<br>
<br>
<br>
<a name="109"></a><span
 style="font-weight: bold; text-decoration: underline;">I heard passive
mode on the FTP server works now</span><br>
<br>
If you are using Dead Souls 2.1 Alpha 19 and above, then yes,<br>
passive mode FTP works now. There are some very important<br>
things to keep in mind.<br>
<br>
<span style="font-weight: bold;">1)</span> Dead Souls now comes with
two ftp servers. The original<br>
is known to the inet system as ftp. The new, passive-mode <br>
server is known to the inet system as hftp. To enable hftp,<br>
run the following mudconfig commands:<br>
<br>
<span style="font-weight: bold;">mudconfig inet enable</span><br
 style="font-weight: bold;">
<br style="font-weight: bold;">
<span style="font-weight: bold;">mudconfig hftp enable</span><br>
<br>
<span style="font-weight: bold;">2)</span> The default port for the
hftp server is 6 less than your<br>
mud's telnet port. So if your mud runs on port 6666, then<br>
the hftp server will be on port 6660. This can be changed<br>
by editing /secure/include/network.h<br>
<br>
<span style="font-weight: bold;">3)</span> The mud must know its
correct external ip address. You<br>
must set this in the config.h file, preferably with the mudconfig<br>
command, like so:<br>
<br>
<span style="font-weight: bold;">mudconfig hostip 111.222.333.444</span><br>
<br>
Where "111.222.333.444" would be the actual ip address that<br>
the external machines will be trying to connect to. If<br>
you do not know what this address is, leave the default<br>
of "127.0.0.1" in the config file. This will let the ftp server<br>
know it needs to try to figure out the address based on information<br>
it gets from the intermud router.<br>
<br>
If it cannot gather this information, or you don't specify<br>
a valid external ip address, then the passive-mode <br>
ftp server will not be able to handle incoming connections <br>
properly.<br>
<br>
<span style="font-weight: bold;">4)</span> Passive ftp support requires
the use of an additional<br>
range of ports. The default range of ports reserved by hftp<br>
starts at -65 from your mud port, to -11 from your mud port.<br>
This means that if your mud is running on port 6666, then<br>
ports 6601 to 6655 are reserved for your passive mode transactions.<br>
If there is a port conflict with another program, you'll<br>
have problems. You can change the port range by editing<br>
/secure/include/network.h<br>
<br>
<span style="font-weight: bold;">5)</span> Once it's been correctly
configured and started, you<br>
should be able to use passive mode for ftp transfers<br>
even if your ftp client computer is behind a firewall.<br>
<br>
If the mud computer itself is behind a firewall, you will<br>
need to make sure that the range of ports discussed<br>
in the above section are being properly forwarded to<br>
the mud computer. If the mud is behind a router, for <br>
example, you may need to configure that router to<br>
forward ports 6601 to 6655 to the mud computer.<br>
<br>
<span style="font-weight: bold;">6)</span> If all has gone well, then
you can ftp to the mud's<br>
hftp port, begin a passive session, and while away<br>
the hours uploading and downloading to your heart's<br>
content. On a command line ftp client, that might look<br>
something like this:<br>
<span style="color: rgb(204, 0, 0);"><br>
myhost: /tmp/foo $ <span style="font-weight: bold;">ls -l</span><br>
total 32<br>
drwxr-xr-x&nbsp;&nbsp; 2 myuser&nbsp;&nbsp;&nbsp;&nbsp;
other&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 117 Dec 26 18:34 ./<br>
drwxrwxrwt&nbsp;&nbsp; 7 myuser&nbsp;&nbsp;&nbsp;&nbsp;
sys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1361 Dec 26 18:33
../<br>
myhost: /tmp/foo $ <span style="font-weight: bold;">ftp mymud.com 6660</span><br>
Connected to mymud.com.<br>
220- Dead Souls FTP server ready.<br>
220-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
FTPD news<br>
220-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/news/ftpd<br>
220-<br>
220 Please login with your creator name or anonymous.<br>
Name (mymud.com:myuser): <span style="font-weight: bold;">myguy</span><br>
331 Password required for myguy.<br>
Password:<br>
230 User myguy logged in.<br>
Remote system type is UNIX.<br>
ftp&gt; <span style="font-weight: bold;">passive</span><br>
Passive mode on.<br>
ftp&gt; <span style="font-weight: bold;">bin</span><br>
200 Type set to I.<br>
ftp&gt; <span style="font-weight: bold;">dir</span><br>
227 Entering Passive Mode (1,2,3,4,30,32)<br>
150 Opening ASCII mode data connection for file list.<br>
drwxrwxr-x&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Dec 26 18:33 .<br>
drwxrwxr-x&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Dec 26 18:33 ..<br>
-rw-rw-r--&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 28 Dec 26 18:33 .plan<br>
-rw-rw-r--&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21 Dec 26 18:33 .profile<br>
drwxrwxr-x&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Dec 26 18:33 adm<br>
drwxrwxr-x&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Dec 26 18:33 area<br>
drwxrwxr-x&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Dec 26 18:33 bak<br>
drwxrwxr-x&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Dec 26 18:33 cmds<br>
-rw-rw-r--&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp; 361 Dec 26 18:33 customdefs.h<br>
drwxrwxr-x&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Dec 26 18:33 log<br>
drwxrwxr-x&nbsp;&nbsp; 1&nbsp; dead_sou
dead_sou&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 Dec 26 18:33 tmp<br>
-rw-rw-r--&nbsp;&nbsp; 1&nbsp; dead_sou dead_sou&nbsp;&nbsp;&nbsp; 3087
Dec 26 18:33 workroom.bak<br>
-rw-rw-r--&nbsp;&nbsp; 1&nbsp; dead_sou dead_sou&nbsp;&nbsp;&nbsp; 3087
Dec 26 18:33 workroom.c<br>
226 Transfer complete.<br>
811 bytes received in 0.0097 seconds (81.68 Kbytes/s)<br>
ftp&gt; <span style="font-weight: bold;">get workroom.c</span><br>
227 Entering Passive Mode (1,2,3,4,30,32)<br>
150 Opening binary mode data connection for /realms/myguy/workroom.c
(3087 bytes).<br>
226 Transfer complete.<br>
local: workroom.c remote: workroom.c<br>
3087 bytes received in 0.031 seconds (96.91 Kbytes/s)<br>
ftp&gt; <span style="font-weight: bold;">bye</span><br>
221 Goodbye.<br>
myhost: /tmp/foo $ <span style="font-weight: bold;">ls -l</span><br>
total 48<br>
drwxr-xr-x&nbsp;&nbsp; 2 myuser&nbsp;&nbsp;&nbsp;&nbsp;
other&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 184 Dec 26 18:35 ./<br>
drwxrwxrwt&nbsp;&nbsp; 7 myuser&nbsp;&nbsp;&nbsp;&nbsp;
sys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1361 Dec 26 18:33
../<br>
-rw-r--r--&nbsp;&nbsp; 1 myuser&nbsp;&nbsp;&nbsp;&nbsp;
other&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3087 Dec 26 18:35 workroom.c</span><br>
<br>
The sharp-eyed among you will no doubt have noticed that<br>
binary mode ("bin") is being used. This is because ASCII<br>
mode transfers don't work too reliably, and fail more <br>
often than not.<br>
</big><big style="font-family: courier new,courier,monospace;"></big><big
 style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold;">7)</span> hftp has NOT been tested for
security or reliability.<br>
If it doesn't work, you're free to let me know, but do<br>
not expect me to fix it. If someone hacks into your mud using<br>
rcp, http, ftp, or hftp, and ruins your life, this is not<br>
my problem. These servers are provided to you as a convenience,<br>
not as standards-compliant, production-quality internet<br>
software. Proceed with extreme care and make regular backups<br>
a top priority. If in doubt, do the following:<br>
<br style="font-weight: bold;">
<span style="font-weight: bold;">mudconfig inet disable<br>
</span><br>
<span style="font-weight: bold;">8)</span> If you find hftp helpful and
useful, please thank Duuk @ Haven<br>
for being kind enough to let me filch it from his mud, <a
 href="http://havenmud.com/">Haven</a>.<br>
If you *don't* like it, please withhold comment until you have<br>
a patch to submit to fix a shortcoming. <br>
<br>
<span style="font-weight: bold;">9)</span> Known issues:<br>
<br>
* If you see this: </big><big
 style="font-family: courier new,courier,monospace;">"</big><big
 style="font-family: courier new,courier,monospace;">netin: Connection
reset by peer" it means<br>
you're trying to use ASCII mode. Remember to use binary mode.<br>
<br>
* Anonymous FTP doesn't work yet.<br>
<br>
<br>
<a name="110"></a><span
 style="text-decoration: underline; font-weight: bold;">I boot the mud
but nothing happens...the startup headers</span><br
 style="text-decoration: underline; font-weight: bold;">
<span style="text-decoration: underline; font-weight: bold;">come up
but nothing preloads and I get no error messages. What's</span><br
 style="text-decoration: underline; font-weight: bold;">
<span style="text-decoration: underline; font-weight: bold;">going on?</span><br>
<br>
This can happen if your internet connection goes down, and<br>
you're using name resolution. For example, if you are trying to<br>
use 1.2.3.4 7777 as your address server, and your network<br>
connection goes down so that you can't reach 1.2.3.4, then<br>
if you try to reboot, the driver will hang at that point in<br>
its startup configuration, waiting for 1.2.3.4 to become <br>
available.<br>
<br>
Simply change that entry in mudos.cfg to something like<br>
localhost or 127.0.0.1 and you should be able to boot again.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="111"></a>How do I add a default alias?</span><br>
<br>
Add it to the Aliases array in /lib/nmsh.c<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="112"></a>How do reset() and clean_up() work?</span><br>
<br>
LPmuds come from a tradition of trying to be as conservative with<br>
computer memory as possible. Back when a server with 128 megabytes<br>
of RAM was worth killing for, people often had to make do with<br>
scant memory resources. Objects needed to be be either swapped to<br>
disk, or unloaded from memory entirely, if they weren't really needed.<br>
<br>
The clean_up() apply was meant to address this. The driver<br>
periodically calls clean_up() on every object. Typically, the<br>
clean_up() function coded into a given object contains instructions<br>
such as "if you're not in a player's inventory and you're just<br>
lying around, then destruct yourself", that sort of thing. In<br>
Dead Souls, clean_up() is a function in LIB_CLEAN, which is <br>
inherited by most objects.<br>
<br>
Some objects should never be unloaded from memory, like daemons,<br>
and some special objects. Such things should have SetNoClean(1)<br>
specified in their create() function, so that the clean_up()<br>
apply doesn't try to destroy them.<br>
<br>
Tangible objects (shoes, swords) that are SetNoClean(1) will<br>
prevent the object they are in (NPC or room) from doing a clean_up().<br>
<br>
reset() is another "driver apply", or function that is called by<br>
the driver. Like clean_up(), reset() is called periodically, but<br>
it is intended not to be a trigger for auto-destruction, so much<br>
as a set of instructions to make an object presentable to <br>
players again.<br>
<br>
For example, if Joe Player completes the Orcslayer quest by<br>
killing a bunch of orcs, then when Jane Player wants to do the <br>
quest, she's just going to find a bunch of dead orcs. However,<br>
when reset() gets called on the room, then the inventory can<br>
reload, so that Jane gets a crack at those orcs as well.<br>
<br>
Like clean_up(), reset() is not generally meant to be put in<br>
run of the mill objects. By default, rooms inherit reset()<br>
from LIB_ROOM, and it serves the purpose of reloading the<br>
inventory the room is supposed to have.<br>
<br>
<br>
<a name="113"></a><span
 style="font-weight: bold; text-decoration: underline;">When do reset()
and clean_up() happen?</span><br>
<br>
The way MudOS works, the driver calls reset() and clean_up()<br>
on objects based on the interval specified in the runtime<br>
configuration file. <br>
<br>
That means that if mudos.cfg</big><big
 style="font-family: courier new,courier,monospace;"> has a "time to
reset" of<br>
3600, your reset interval is 1 hour. Orcs will repopulate the<br>
cave every hour at that rate (assuming they've been killed).<br>
<br>
Similarly, "time to clean up" specifies the driver's <br>
interval between clean_up()'s. <br>
<br>
While this is a valid scheme, Dead Souls doesn't rely <br>
on it. Dead Souls uses the TIME_TO_RESET variable in <br>
/secure/include/config.h to determine the reset() and<br>
clean_up() interval. If TIME_TO_RESET is 14400, then the<br>
master daemon (MASTER_D) will run eventReset() every four<br>
hours. eventReset() is a function that seeks out objects and<br>
calls reset() and clean_up() on them.<br>
<br>
Note that this may cause set_reset() to behave in a way you don't<br>
expect, and it means you'll get reset()'s in your mud even if<br>
you compile the driver not to do so. <br>
<br>
Therefore, it's a good idea to set your "time to clean up"<br>
and </big><big style="font-family: courier new,courier,monospace;">"time
to reset" in mudos.cfg to something very large<br>
(like 2000000000, aka 63 years) so that you don't have<br>
two separate systems doing reset()'s and clean_up()'s.<br>
<br>
In Dead Souls 2.4.1 and below, MASTER_D calls reset() and<br>
clean_up() on 25% of loaded objects at a time, to avoid<br>
lag on busy muds. 2.5a1 and above can choose to have these<br>
fuctions called on all loaded objects with the RESET_ALL<br>
definition in /secure/include/config.h<br>
<br>
<br>
<span style="text-decoration: underline; font-weight: bold;"><a
 name="114"></a>I want a 100% PK mud. Setting rooms PK one by one is
not acceptable.</span><br>
<br>
Setting your DS mud to be 100% PK (pplayer killing) is not that
convenient <br>
by default, I agree. The reason for this is that from what I've seen, <br>
unrestricted PK is a great way to ruin a mud, and it should not be <br>
something you can enable accidentally.<br>
<br>
Having said that, this is the procedure you would follow to make<br>
a Dead Souls mud 100% unrestricted PK.<br>
<br>
1) Run the command: <span style="font-weight: bold;">mudconfig pk yes</span><br>
2) Edit /lib/std/room.c. Change <br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">private static
int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlayerKill&nbsp;&nbsp;&nbsp; = 0;</span><br>
<br>
to<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">private static
int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PlayerKill&nbsp;&nbsp;&nbsp; = 1;</span><br>
<br>
3) Edit /lib/living.c. Change<br>
<br>
<span style="color: rgb(0, 102, 0); font-weight: bold;">&nbsp;&nbsp;&nbsp;
isPK = 0;</span><br>
<br>
to<br>
<br>
<span style="font-weight: bold; color: rgb(0, 102, 0);">&nbsp;&nbsp;&nbsp;
isPK = 1;</span><br>
<br>
4) Reboot<br>
<br>
5) Players created before this change may still need to use the <span
 style="font-weight: bold;">pk</span> command<br>
to enable player killing for themselves.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="115"></a>How do I make a new skill?</span><br>
<br>
What people usually mean by this is Diku style "skills", which are<br>
more like special commands or spells than Dead Souls skills. In<br>
Dead Souls, a "skill" is a property of a living thing that allows it<br>
to be proficient to some specified level at a kind of activity. For<br>
example, to be able to cast a defensive spell like buffer, you<br>
may need a particular level of proficiency at the skill of "magic
defense".<br>
<br>
That kind of skill isn't "created" in the standard sense. That kind<br>
of skill is added to a player or NPC programmatically, usually when<br>
their character is created, or they advance levels, or join a class.<br>
<br>
For more information on that kind of skill, please read Section IV<br>
of Chapter 8 of the <a href="http://dead-souls.net/doc/guide/chapter08">Admin
Guide</a>.<br>
<br>
In order to make the Diku-style "skill", all you really need to <br>
do is write a new command. For example, take a look at <a
 href="http://dead-souls.net/code/ds2.8.4/lib/cmds/players/flee.c">/cmds/players/flee.c</a><br>
<br>
That's what a Dead Souls command looks like. Pretty straightforward,<br>
but you'll need to become a little familiar with LPC to make your<br>
own. Read the <a href="http://dead-souls.net/doc/manual/">Creator's
Manual</a> to become familiar with LPC, then<br>
play around with making a command of your own by copying flee.c to<br>
bash.c or whatever, and tinkering with the code.<br>
<br>
There's no "quick" way to making a new skill of this kind. This is the<br>
point where you decide whether to invest the time in learning enough<br>
LPC to get your vision implemented in earnest.<br>
<br>
For the advanced coders, I would suggest creating a new <a
 href="http://dead-souls.net/verbs.html">verb</a>, rather <br>
than a new command. Verbs are far more powerful and sophisticated than<br>
commands and are suited for just this kind of purpose. However, they<br>
require intermediate-to-advanced LPC coding skills, so if you are<br>
new to LPC, please do not try verbs yet.<br>
<br>
<br>
<a name="116"></a><span
 style="font-weight: bold; text-decoration: underline;">Why was
Descartes so lame?</span><br>
<br>
People have really got the wrong idea here. There are two main
complaints<br>
against the original author of the Dead Souls lib:<br>
<br>
"Descartes was a mean jerk."<br>
<br>
and<br>
<br>
"Descartes was an incompetent coder and/or docwriter."<br>
<br>
My first response is that even if these things were true, <span
 style="font-weight: bold; font-style: italic;">it doesn't matter</span>.<br>
<br>
Whether Descartes was personally hurtful to you once is totally<br>
irrelevant to your mud. He has left the mudding community and<br>
will not hurt you again. Further, Dead Souls 2 was built from<br>
public domain code, meaning he can never ever revoke your right<br>
to use Dead Souls. By nursing your old resentments against Descartes,<br>
you are only casting yourself in a bad light, by seeming petty<br>
and self-involved.<br>
<br>
As to his supposed programming competence, this also is entirely
irrelevant<br>
to you. I can tell you that as the current maintainer of DS, I am<br>
intimately familiar with his code and am in an excellent position<br>
to sit here and bitch about it. The main reason I don't is that:<br>
<br>
1) I am eternally grateful he wrote it in the first place.<br>
2) Given the TENS OF THOUSANDS of lines of good code he's written, a
few <br>
&nbsp;&nbsp; stumbles aren't worth getting smarmy about.<br>
3) Whether the code was written by him, one of his people, or dictated<br>
&nbsp;&nbsp; to the lib directly from the mouth of Satan in the pits of
hell, in the end, the <br>
&nbsp;&nbsp; original author is not the problem. If the code doesn't do
what you want, there <br>
&nbsp;&nbsp; is really no point at all in grousing about it. Either fix
it, ask for help, or<br>
&nbsp;&nbsp; get a new lib. If you're an admin it's because you're a
can-do type,<br>
&nbsp;&nbsp; and willing to DIY where necessary. If not, blaming and
complaining aren't<br>
&nbsp;&nbsp; the answer. Meditation and introspection are. As in, you
should be asking<br>
&nbsp;&nbsp; yourself if running a mud is what you should be doing.<br>
<br>
Ok, now that I got the ranting out of my system, let's address the
specific accusations:<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">"Descartes
was a mean jerk."<br>
<br>
&nbsp;&nbsp;&nbsp; Yeah, sort of. It really depended on how you
approached him. Really,<br>
as far as I could tell, he was a normal person with a somewhat low<br>
threshold for having his buttons pushed. And people enjoyed pushing<br>
his buttons. A lot. And this lowered his threshold for it. Rinse,
repeat.<br>
<br>
&nbsp;&nbsp;&nbsp; As a result, if you were to publicly approach him in
a way that<br>
he identified as making you likely to be a button pusher, he'd tend to <br>
handle you as such. You were less likely to get bile on you if you<br>
approached him privately, but then, you might just get ignored as<br>
Yet Another Loser wanting her hand held rather than just putting in<br>
the work learning how to build her mud.<br>
<br>
&nbsp;&nbsp;&nbsp; On occasion he'd also just be generally irritable,
combative, and argumentative.<br>
In short, he was a normal person. I have personally been involved in<br>
plenty of flaming back and forth with Descartes...quite thoroughly
hostile<br>
and ill-spirited. I doubt either one of us took it personally. This sort<br>
of behavior was kind of the norm on intermud at the time. If you took it<br>
personally, really, that's your problem, not his.<br>
<br>
&nbsp;&nbsp;&nbsp; And remember, we're talking about Descartes "in
character". Whenever<br>
I've communicated with George Reese out of his Descartes character,
he's been<br>
nothing but polite, courteous, and personable. Don't mistake the player<br>
for the character.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;">"Descartes
was an incompetent coder and/or docwriter."<br>
<br>
&nbsp;&nbsp;&nbsp; This one bugs me. The main reason is that I don't
think the people<br>
who say these things are in a position to judge. I think that something
like<br>
99% of his code is just dandy. It's useful and effective. And most of<br>
it is quite efficient: remember that Dead Souls was developed on very<br>
weak machines and was the basis for a very busy mud. It was vital that<br>
things run efficiently and load economically.&nbsp; <br>
<br>
&nbsp;&nbsp;&nbsp; That his code contains some weaknesses is beyond
dispute. If I were<br>
to criticize something about his code, though, it wouldn't be that it is<br>
shoddy or ill-conceived. Where I run into something that makes me spit,<br>
usually it's obvious that he meant to finish a thing, and just didn't<br>
get to it. If you run into something that tempts you to say "bah,<br>
more DescartesLogic", step back and take a deep breath. The chances are<br>
that you're really not grasping that bigger picture of the code you're<br>
examining. <br>
<br>
&nbsp;&nbsp;&nbsp; On the other hand, yes, some objects really seem to
have been handled<br>
carelessly. I believe I lost a few months off my life from the
aggravation<br>
of trying to fix various issues in armor. This does not mean Descartes <br>
was an incompetent coder. It means that, like normal people who work on<br>
a hobby that does not feed, clothe, or house them, Descartes on occasion<br>
slapped something together to just get it working and do what he needed
quickly.<br>
<br>
&nbsp;&nbsp;&nbsp; Is that something anyone is not guilty of?<br>
<br>
&nbsp;&nbsp;&nbsp; As to weak docs, remember that his Basic and
Intermediate LPC texts<br>
are of biblical significance in the history of Dead Souls. They are,
though<br>
imperfect, a bedrock of documentation that is massive in size and<br>
greatly detailed. This is in addition to the material in /doc/build. If<br>
those docs seem inadequate to you, then you simply cannot be pleased.<br>
<br>
&nbsp;&nbsp;&nbsp; In the end, keep this in mind. George Reese is a
professional developer,<br>
who runs a software business. He is also a professional docwriter,
having<br>
published technical books that people have paid real money to buy.
Unless<br>
you have comparable credentials, and/or have published a mudlib yourself<br>
which thousands of people have used, then you might want to reconsider<br>
complaining about Descartes and his competence in these areas.<br>
<br>
<br>
<a name="117"></a><span
 style="font-weight: bold; text-decoration: underline;">The mud is
locked whats the command to add someone to the allow list?</span><br>
<br>
<span style="font-weight: bold;">groupmod -a test playername</span><br>
<br>
Note that this tags the player as a test char and<br>
gives her access to normally restricted areas. For<br>
details on what groups grant what access, see the <br>
FAQ entry: <a href="http://dead-souls.net/ds-admin-faq.html#84">http://dead-souls.net/ds-admin-faq.html#84</a><br>
&nbsp;&nbsp;&nbsp; <br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="118"></a>Shouldn't you change all the documentation to reflect
the move to FluffOS?</span><br
 style="font-weight: bold; text-decoration: underline;">
<br>
No. See this faq entry: <a
 href="http://dead-souls.net/ds-faq.html#driver">http://dead-souls.net/ds-faq.html#driver</a><br>
<br>
Referring to the driver as MudOS is imprecise for the reader if<br>
she is currently running FluffOS, but it is not altogether <br>
incorrect and her potential confusion so minimal that I do not<br>
see a need to rephrase each instance of "MudOS" into "the driver you
are <br>
using, which may be MudOS for older releases, and FluffOS for newer
ones,<br>
although FluffOS is a derivative of MudOS and functionally<br>
indistiguishable at runtime except if you use its extended features,<br>
in which case you should not be confused anyway".<br>
<br>
Where appropriate and convenient, I do from time to time change the<br>
docs to reflect the migration, but it's not going to be a to-do list
item.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="119"></a>How do I change my timezone?</span><br>
<br>
Use the command: <span style="font-weight: bold;">admintool</span><br>
<br>
Select option: c<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="120"></a>So I herd u liek mudkip</span><br>
<br>
You herd right.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="121"></a>Where is all the player information stored?</span><br>
<br>
If you mean "where is each player's information stored?",<br>
the answer is "in their playerfile." In my case, it's<br>
/secure/save/creators/c/cratylus.o , for a non-creator,<br>
it might be something like /secure/save/players/t/testguy.o .<br>
<br>
<a href="http://dead-souls.net/ds-admin-faq.html#80">Note that .o files
should never be edited.</a><br>
<br>
If you mean "where is the information for all players?",<br>
then there isn't really any such thing. The best answer to that<br>
is /secure/save/creators and /secure/save/players, because<br>
that's where the save files live.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="122"></a>The addrace command complains that the race already
exists.</span><br>
<br>
A very common error is to copy an old race file to <br>
a new name, and try to add it just like that. The<br>
problem is that the new file contains inside it a<br>
race name that is already known to the races daemon.<br>
<br>
Edit the new file and change the race name in it to<br>
reflect the name of the new race, and try again.</big><big
 style="font-family: courier new,courier,monospace;"><br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="123"></a>I am confused about the player/creator distinction.</span><br>
<br>
The way it was explained to me is that "imms" on <br>
Diku-derivative muds are basically "superplayers"...<br>
that is, powerful and high-level, but not set apart<br>
from players as fundamentally as is the case on DS.<br>
<br>
For example, someone once was shocked to discover<br>
that I'd never bothered to test lead/follow code<br>
on creators. My response was something along the lines<br>
of "I guess I just never figured they'd have much<br>
use for it," which was even more horrifying.<br>
<br>
The thing to realize is that creators are not players<br>
<span style="font-weight: bold;">at all</span>. They cannot be, because
their powers are<br>
so vast as to subvert any concept of fair play.<br>
A creator can kill any monster instantly with the<br>
zap command. She can read the code for a quest and<br>
complete it with no effort by just cloning the<br>
desired object, or even just evaluating the proper<br>
function call to achieve the desired effect. She<br>
doesn't have to "follow" anyone, she can just instantly<br>
teleport herself to the intended location.<br>
<br>
In fact, on the original Dead Souls 1.1 codebase, <br>
creators technically didn't even have bodies. They<br>
were just kind of amorphous entities floating around<br>
the game...but boy, people <span style="font-weight: bold;">hated</span>
that. They wanted <br>
to wield and wear things, and do other stuff that<br>
players can do. And so today you can see creators<br>
strolling about as if they share the same mortal<br>
limitations players do, but do not be fooled.<br>
<br>
Creators are not players. They are godlike beings<br>
walking among players, able to manipulate the essence<br>
of their world. Therefore, please expect that lots of<br>
things simply don't apply to them.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="124"></a>How do I prevent people from using channels?</span><br>
<br>
By default, only creators have intermud channel access.<br>
New players can't use intermud, unless a creator adds<br>
an intermud channel to them (for example, <span
 style="font-weight: bold;">call joe-&gt;AddChannel("dchat")</span> ).<br>
<br>
If you want to have more strict control on who can use<br>
intermud channels, use the mudconfig command to <br>
restrict intermud:<br>
<br>
<span style="font-weight: bold;">mudconfig intermud restrict</span><br>
<br>
Once you do that, only people in the INTERMUD group in<br>
/secure/cfg/groups.cfg can use intermud channels, <br>
regardless of what channel has been added to them.<br>
To add someone to the INTERMUD group:<br>
<br>
<span style="font-weight: bold;">groupmod -a intermud joe</span><br>
<br>
to remove them:<br>
<br>
<span style="font-weight: bold;">groupmod -r intermud joe</span><br>
<br>
Warning: use great care with the groupmod command.<br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"><a
 name="125"></a>How do i disable the rss bot, or other channels?</span><br>
<br>
By default, creators have some standard channels<br>
added to them upon their promotion to creator status.<br>
You can see which channels they are by reading <br>
/secure/cmds/admins/encre.c and looking for a line similar to this:<br>
<br>
</big><big><span style="font-family: monospace;">cre_ob-&gt;AddChannel(({"cre",
"newbie", "gossip", "ds", "ds_test", "lpuni", "death",
"connections","intercre","dchat","inews" }));</span></big><big
 style="font-family: courier new,courier,monospace;"><br>
<br>
Modify that line to remove channels that you<br>
feel new creators do not need, then type:<br>
<br>
<span style="font-weight: bold;">update </span></big><big
 style="font-family: courier new,courier,monospace; font-weight: bold;">/secure/cmds/admins/encre.c</big><big
 style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;"></span><br>
<br>
And people you promote to creator after that won't have<br>
the channels you removed from that line.<br>
<br>
To simply turn off a channel <span
 style="font-style: italic; font-weight: bold;">you</span> dislike <span
 style="font-style: italic; font-weight: bold;">yourself</span>,<br>
just type the channel name alone at the command prompt, like:<br>
<br>
<span style="font-weight: bold;">inews</span><br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="126"></a>I made a verb but it doesn't work</span><br>
<br>
Please refer to the <a href="http://dead-souls.net/verbs.html">verb
tutorial</a>, and<br>
really read the whole thing through. Note that<br>
the most common error is failing to add the<br>
appropriate <a href="http://dead-souls.net/verbs.html#4">direct_/indirect_</a>
applies to the<br>
target object.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="127"></a>Does Dead Souls support databases like MYSQL?</span><br>
<br>
Short answer: Not really.<br>
<br>
More correct answer: Sort of. FluffOS/MudOS, the driver<br>
that DS uses as its "engine", has some support for<br>
databases built in. However, enabling it requires<br>
recompiling the driver with the proper config options,<br>
and if you manage to do this correctly by some<br>
great feat of luck, you'll have a driver that supports<br>
MYSQL features from back in 2000 or before.<br>
<br>
That is to say, relying on the driver's support for<br>
DB is chancy, and success doesn't mean you actually<br>
succeed in doing anything useful.<br>
<br>
These days, when people want to use a FluffOS/MudOS<br>
lib like Dead Souls in conjunction with a database,<br>
the most common and successful approach is to use<br>
an intermediary script, like perl or python. You<br>
code a lib object that uses MudOS sockets or <br>
external_start() to talk to your script/program, and the<br>
script/program then does the heavy lifting of correctly<br>
communicating with the database.<br>
<br>
There's no DS lib object currently in the release<br>
that handles this sort of stuff. If you want DB support,<br>
you'll pretty much have to DIY. The good news is that<br>
it's certainly doable...folks have done it in the past.<br>
The bad news is you'll really have to know what you're<br>
doing for it to work.<br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"><a
 name="128"></a>How do I make my new currency work?</span><br>
<br>
Presumably you've already used admintool options 2<br>
and j to add a new currency and are now wondering <br>
what to do to put it in the game.<br>
<br>
Currency isn't like a normal "object". When you<br>
pick up a pile of coins, for example, that pile<br>
was only a kind of placeholder object. Once you get<br>
it, it vanishes, and the weight and value it had<br>
are added to you, without there being a specific <br>
"money object" you're carrying. When you drop <br>
money, a pile is created to hold that value, but<br>
again, when someone picks it up, it goes away.<br>
<br>
So, now that there are Quatloos in your game, how<br>
do you get your hands on some?<br>
<br>
As a creator, it couldn't be simpler. Just type:<br>
<br>
<span style="font-weight: bold;">call me-&gt;AddCurrency("quatloos",500)</span><br>
<br>
But I'm guessing what you're really wanting is<br>
to make Quatloos the standard legal tender for<br>
your mud. In that case, you'll want your vendors,<br>
bank tellers, and barkeeps to use that as their<br>
default currency. <br>
<br>
Tanke a look at how this is specified in the following<br>
commercial NPC's, and modify your own accordingly:<br>
<br>
/domains/town/npc/otik.c<br>
/domains/town/npc/lars.c<br>
/domains/town/npc/zoe.c<br>
<br>
<br style="font-weight: bold; text-decoration: underline;">
<span style="font-weight: bold; text-decoration: underline;"><a
 name="129"></a>My friends can't connect to my mud, but I can!</span><br>
<br>
The most common scenario here is that you are running<br>
your mud at home, and you are able to telnet to it<br>
with no problem because you are local to the mud.<br>
<br>
However, these days there are usually a couple of<br>
layers of security between your PC and the internet.<br>
Chances are that your internet connection is through<br>
a "router" or "firewall" device. Find the physical<br>
device that your computer's network port is connected<br>
to. Examine it to determine its manufacturer name and<br>
the device's model number.<br>
<br>
Now go on Google and do a search for it, for example:<br>
<br>
+linksys +pos2000 +user +manual <br>
<br>
Keep varying the search terms until you find the<br>
documentation for your device. Then download it and<br>
read it. It should describe how to log into the<br>
device and configure its firewalling to allow incoming<br>
connections to be forwarded to the computer that is<br>
running the mud.<br>
<br>
You'll probably need to know the IP address of the<br>
mud computer. If it is running windows, open a command<br>
window and type: <br>
<br>
<span style="font-weight: bold;">ipconfig /all</span><br>
<br>
(protip: 127.0.0.1 is not the correct IP to forward to)<br>
<br>
If you're running UNIX/Linux, try: <span style="font-weight: bold;">ifconfig
-a<br>
<br>
</span>Using the documentation for your device, and the networking<br>
information from the computer, configure your device to<br>
forward incoming connections to whatever port your<br>
mud is running (typically port 6666).<br>
<br>
If that *still* doesn't work, you may be running a<br>
software firewall on the mud computer that rejects incoming<br>
connections. Temprarily disable the computer's firewall and<br>
see if your friends are then able to connect. If so,<br>
then you know you need to figure out how to configure your<br>
software firewall to allow connections on the mud port.<br>
<br>
If you can't figure it out, use Google to download<br>
documentation on your firewall software.<br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="130"></a>My efun override is not working</span><br>
<br>
Put it in /secure/sefun/sefun.c<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="131"></a><span
 style="font-weight: bold; text-decoration: underline;">How do I remove
the QCS?</span><br>
<br>
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; yo cratylus</span><br
 style="color: rgb(204, 0, 0);">
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; how do i
remove the QCS on my copy of DS?</span><br>
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; I want to 100%
remove it without hurting anything else.</span><br>
Cratylus &lt;cre&gt; why not simply avoid using it?<br>
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; because its
too tempting for my creators and I want them to learn to code.</span><br
 style="color: rgb(204, 0, 0);">
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; I want to know
where all it's located at etc., so I can remove it safely without
affecting anything else.</span><br>
Cratylus &lt;cre&gt; overwrite the files in /secure/modules/ with blank
files<br>
Cratylus &lt;cre&gt; that'l probably do it<br>
Cratylus &lt;cre&gt; dont just delete them<br>
Cratylus &lt;cre&gt; and, of course, back them up first, just in case<br>
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; what if i
removed the create command from /secure/cmds/?</span><br>
Cratylus &lt;cre&gt; that wasn't the advice i gave you<br>
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; Mind telling
me what the point of the QCS would even be?</span><br>
Cratylus &lt;cre&gt; please clarify the question<br>
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; What is the
point of a quick creation system?</span><br>
Cratylus &lt;cre&gt; <a href="http://dead-souls.net/articles/olc.html">http://dead-souls.net/articles/olc.html</a><br>
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; Nah... It's
buggy... It doesn't work.</span><br>
Cratylus &lt;cre&gt; then why bother removing it?<br>
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; It backtracks
you more often than helps you move forward.</span><br>
Cratylus &lt;cre&gt; then dont use it<br>
&lt;cre&gt; Cratylus shrugs.<br>
<span style="color: rgb(204, 0, 0);">Amadeus &lt;cre&gt; I don't even
want it on my MUD.</span><br>
Cratylus &lt;cre&gt; well then, follow my instructions, and you'll be
all set<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="132"></a>I
heard you can edit stuff from the interwebs?</span><br>
<br>
Yes! Starting in <a href="http://dead-souls.net/code/alpha/">2.7a5</a>
you can now use CreWeb to edit your files.<br>
For folks who hate using ed but don't have shell access, CreWeb<br>
is just the ticket.<br>
<br>
It's basically a bunch of cgi scripts that run from the mud's<br>
built-in webserver. You log in with your mud name and mud<br>
password, and you can browse, upload, and edit files.<br>
<br>
This is what your homedir looks like: <a
 href="http://lpmuds.net/homedir.jpg">http://lpmuds.net/homedir.jpg</a><br>
This is what editing looks like: <a
 href="http://lpmuds.net/editing.jpg">http://lpmuds.net/editing.jpg</a><br>
<br>
Note that this is purely experimental and may pose security<br>
risks. CreWeb was coded with security as a priority but I<br>
cannot guarantee it is 100% safe.<br>
<br>
If you want to give it a whirl:<br>
<br>
<span style="font-weight: bold;">mudconfig http port 8001</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">mudconfig http disable</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">mudconfig cgi enable</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">mudconfig dirlist enable</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">mudconfig creweb enable</span><br
 style="font-weight: bold;">
<span style="font-weight: bold;">mudconfig http enable</span><br>
<br>
(protip: It doesn't have to be port 8001)<br>
<br>
And then use your web browser to go to your<br>
mud's ip with the port you specified...for example:<br>
<br>
<a href="http://dead-souls.net:8001/cgi/login.html">http://dead-souls.net:8001/cgi/login.html</a><br>
<br>
Note that the alcatraz url is not your mud, so don't<br>
bother trying to log in. That's just an example of<br>
what the URL and the page looks like.<br>
<br>
While creweb in theory is browser-agnostic, the sad<br>
truth is that Internet Explorer insists on doing weird<br>
new things I can't keep up with, and it's easier to support<br>
Firefox which everyone has than Explorer which is<br>
Windows-specific. So if you run into problems, please<br>
try using Firefox instead. <br>
<br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="133"></a>I want to let people build but I don't want them to be
full creators</span><br>
<br>
Starting in 2.7a7, players can use the QCS to create<br>
rooms, npc's, weapons, armor, etc, if they are members<br>
of the BUILDER group. Simply add your new builder to<br>
the BUILDER group with this command (if her name is "newbuilder"):<br>
<br>
<span style="font-weight: bold;">groupmod -a builder newbuilder</span><br>
<br>
And then have her quit and log back in. <br>
Her stuff will be in /estates/n/newbuilder<br>
<br>
Have her issue the command "<span style="font-weight: bold;">home</span>",
then get the<br>
staff and guidebook from her chest, and start reading.<br>
<br>
Note that builders do not have access to commands like<br>
ed, cd, ls, more, etc. They are meant to be isolated <br>
from LPC. If you want builders who can view and edit<br>
LPC code, they'll need to be <a href="#3">creators</a>.<br>
<br>
However, builders do have a workroom they can home to,<br>
and can use standard QCS commands like create, modify, <br>
add, etc.<br>
<br>
Note that the game will try to isolate builder stuff from<br>
live game content. Builder objects will not have value<br>
at shops, the armor won't protect from "real" in-game <br>
attacks, and weapons will be effective only against npc's<br>
from the builder's estate.<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="134"></a><span
 style="text-decoration: underline; font-weight: bold;">How do I enable
IMC2? What is it?</span><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
IMC2 is an intermud protocol, like <a
 href="http://lpmuds.net/intermud.html">Intermud-3</a>, but it is<br>
slightly different in how it works, its definition, and<br>
implementation. You can think of it as another brand of<br>
intermud...IMC2 and I3 being like Pepsi and Coca-Cola.<br>
<br>
The folks at Mudbytes run an IMC2 server network, and your<br>
mud is preconfigured for it. As of 2.7, Dead<br>
Souls does not automatically connect to IMC2. To connect<br>
to it, you would issue the following command:<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold;">mudconfig imc2 enable</span><br>
<br>
To start listening to specific channels, you add them<br>
to yourself in the same manner as Intermud-3 channels:<br>
<br>
<span style="font-weight: bold;">call me-&gt;AddChannel("ichat")<br>
<br>
</span></big><big style="font-family: courier new,courier,monospace;">I
am not in charge of IMC2, do not complain to me about<br>
it. For more information about channels, rules, specs,<br>
etc, visit their <a href="http://www.mudbytes.net/intermud">IMC2
support page</a>. <br>
<br>
<span style="font-weight: bold;">Note</span>: In Dead Souls 2.8 there
is a bug which requires<br>
you to edit /secure/sefun/mud_info.c. For details, see<br>
The forum post: <a
 href="http://lpmuds.net/forum/index.php?topic=697.msg3470#msg3470">http://lpmuds.net/forum/index.php?topic=697.msg3470#msg3470</a><br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<a name="135"></a><span
 style="font-weight: bold; text-decoration: underline;">Combat is too
slow!</span><br>
<br>
&nbsp;&nbsp;&nbsp; Combat in Dead Souls depends on individual stats.<br>
If you're a stone golem, your speed will be low, meaning<br>
your heartbeats are slow, and you only get an attack in<br>
every 4 seconds or so.<br>
<br>
&nbsp;&nbsp;&nbsp; On the other hand, someone with a very high speed
stat<br>
could get an attack every two, or even every second.<br>
<br>
&nbsp;&nbsp;&nbsp; The idea is that in having varying combat speeds,<br>
it makes things a bit more realistic and it means you<br>
need to use some strategy.<br>
<br>
&nbsp;&nbsp;&nbsp; However, some people are used to codebases that do<br>
not bother with this sort of thing. They want to see fighting<br>
scream by their screen, never mind stats. For such people,<br>
a new configuration option, FAST_COMBAT, has been added to<br>
config.h. To enable "fast combat, regardless of speed stat",<br>
issue the command:<br>
<br>
<span style="font-weight: bold;">mudconfig fastcombat enable<br>
<br>
<br>
<a name="136"></a><span style="text-decoration: underline;">I want
players to select their class when they create their characters</span><br>
<br>
</span></big><big style="font-family: courier new,courier,monospace;">Starting
in 2.7a26 this can be enabled
with the command:<br>
<br>
<span style="font-weight: bold;">mudconfig selectclass yes</span><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
Note that the existing classes are just examples, and are therefore<br>
unlikely to have all the neat things you will eventually have<br>
in your mud.<br>
<br>
<br>
<a name="137"></a><span
 style="font-weight: bold; text-decoration: underline;">I am strongly
opposed to the use of intermud</span><br
 style="font-weight: bold; text-decoration: underline;">
<br>
There are a few common reasons for this, often based on old<br>
or incorrect assumptions. Obviously you're going to run your<br>
own mud however it pleases you, but if your decision to disable<br>
intermud is based on the following beliefs, you may want to<br>
re-evaluate those reasons:<br>
<br>
<span style="text-decoration: underline;"><a name="mean"></a>"People
are mean on intermud"</span><br>
<br>
Some people on some channels are mean, yes. However, Dead Souls<br>
does not enable those channels for your creators by default.<br>
The default channels are newbie-friendly and have <a
 href="http://lpmuds.net/intermud.html#rules">rules</a> which<br>
are enforced. <br>
<br>
<a name="liar"></a><span style="text-decoration: underline;">"Liar. I
have seen the <a href="http://dead-souls.net/duuk.txt">log</a>s.
Newbies are eaten alive."</span><br>
<br>
Not anymore. Not on my watch. Old logs are old. If a newbie<br>
is needlessly aggressed now, the <a
 href="http://dead-souls.net/duuk2.txt">aggressor is confronted</a>.<br>
If the aggressor does not behave, the aggressor faces...<br>
consequences.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="double_liar"></a><span style="text-decoration: underline;">"Double
liar. You were just abusing Hellmonger <span style="font-weight: bold;">YESTERDAY</span>!"</span><br>
<br>
This is one of those things that is hard for "newcomers" to<br>
understand, but on the intergossip channel, what looks like<br>
bitter, unrelenting abuse is often meant (and taken) as<br>
warm camaraderie. Oldtimers like Hellmonger, Duuk, and me<br>
often have ways of communicating that seem like perhaps one<br>
or more of us may wind up homicided for real. It's just goofing<br>
around, and it's one of the reasons I strongly discourage<br>
newcomers from connecting to that channel. As Kalinash very<br>
aptly <a
 href="http://mudbytes.net/index.php?a=topic&amp;t=752&amp;min=0&amp;num=15">put it</a>:
<br>
<br>
"As for the content of the I3 channels, dead_souls and dchat are
intended to be helpful and PG-13.&nbsp; Once you wander into
imud_gossip, it's a frat house full of sailors on shore leave.&nbsp;
Fortunately, a most of the bile spewing, name calling and other general
rudeness, is still done in good humor."<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<span style="text-decoration: underline;"><a name="distracting"></a>"Intermud
is distracting"</span><br>
<br>
You don't have to prevent everyone on the mud from using<br>
intermud just because you find channels distracting. If you<br>
don't want to hear from a channel, for example the "ds_test"<br>
channel, you can issue the command:<br>
<br>
<span style="font-weight: bold;">ds_test</span><br>
<br>
By itself, the channel name disables or enables the channel<br>
for you personally, without affecting how others on the<br>
mud use it.<br>
<br>
<span style="text-decoration: underline;"><a name="theft"></a>"People
will try to steal my builders and coders"</span><br>
<br>
This is unlikely. I don't think I've seen very much of this<br>
in the years I've run the network. It certainly *can* happen <br>
that your staff leaves your mud for another one. I would<br>
suggest that this would happen whether you enable intermud<br>
or not. <br>
<br>
You see, when a coder has a question you can't answer, or<br>
if you're not there, she's going to do a web search, and<br>
find the <a href="http://lpmuds.net/forum/">lpmuds.net forum</a>, or
log into the <a href="http://dead-souls.net/javaclient/demo.html">Dead
Souls demo<br>
mud</a>. She's going to run into friendly, helpful people who<br>
share their ideas and suggestions, and she's going to<br>
want more of that. If you block intermud on your mud,<br>
she's just going to go somewhere else to find support,<br>
and she might just stay there. <span style="font-style: italic;">And</span>
tell your other staff<br>
about the new place that isn't so restrictive.<br>
<br>
By blocking intermud, you actually make it <span
 style="font-weight: bold; font-style: italic;">more</span> likely
you'll<br>
lose staff, not less.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="hog"></a><span style="text-decoration: underline;">"Intermud is
a resource hog"</span><br>
<br>
This is not correct. Your intermud connection generates<br>
about as much traffic/lag as a single moderately active<br>
player. I have tested Dead Souls with very large numbers<br>
of connections, and very large numbers of players, and<br>
I can assure you, quite confidently, the default intermud<br>
connection for your mud does not "lag" your mud. This<br>
might have been true on some other driver, with some other<br>
lib, in some other era...but not today.<br>
<br>
<a name="crat_sucks"></a><span style="text-decoration: underline;">"I
just don't like you, Cratylus"</span><br>
<br>
You don't have to be a fan of mine to benefit from<br>
intermud. Some of the most established oldbies on intermud<br>
love nothing more than to give me a hard time on the intergossip<br>
(read not-very-friendly) channel. If nothing else, intermud<br>
would allow you to join the intergossip channel and tell<br>
me exactly how much I suck in real-time.<br>
<br>
<a name="malware"></a><span style="text-decoration: underline;">"I am
afraid that intermud is actually some sort of Trojan or spyware"</span><br>
<br>
Short answer: intermud doesn't spy on you.<br>
<br>
Long answer:<br>
Dead Souls is an LP lib, meaning that it has no secrets. Its<br>
code is not pre-compiled. What it does, and how it does so is<br>
completely open for anyone to download and inspect. If you<br>
know anything at all about me you know there are plenty of<br>
people who would <span style="font-weight: bold; font-style: italic;">love</span>
to find spyware/malware/whatever in<br>
Dead Souls, and make a big deal of it. If intermud worked<br>
as a spy tool for Dead Souls, it would be the worst thing that<br>
ever happened to the project. <br>
<br>
You can rest assured that intermud is not something <br>
used for collecting secrets about your mud.<br>
<br>
Having said that, intermud does allow people to see some<br>
things you might not like:<br>
<br>
* The list of logged-on players.<br>
* Finger information about players (except for their IP)<br>
* Basic information about which driver and lib version you <br>
run, as well as uptime and such miscellanea.<br>
<br>
If that information is something you don't want others to<br>
see, then disabling intermud would do the trick. However,<br>
it's really not very secret information...since logging<br>
in as "guest" would let anyone see the exact same things!<br>
<br>
One thing to keep in mind is that even though I do not<br>
monitor what people say to each other with "intermud tells"<br>
(different from channels. intermud tells are just between the <br>
two people), intermud tells go across the router in plain text, so<br>
you cannot be guaranteed that your <a href="#90">intermud tell</a>
will never <br>
be read by another person. However, regular tells on<br>
your mud are not intermud tells, and therefore regular<br>
tells on your mud never reach the intermud.<br>
<br>
If you want to see the data your mud sends to the intermud<br>
router, visit the network room:<br>
<br>
<span style="font-weight: bold;">goto /secure/room/network</span><br>
<br>
You'll see the raw intermud packets going in and out.<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
<a name="minors"></a><span style="text-decoration: underline;">"My game
will have young children. I don't want them exposed to strangers."</span><br>
<br>
You should definitely block intermud then, or at<br>
least <a href="#35">restrict it</a> to adult staff.<br>
<br>
<a name="criminal"></a><span style="text-decoration: underline;">"I am
in a country where some opinions are criminal"</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;">You
should definitely block intermud then, or at<br>
least <a href="ds-admin-faq.html#35">restrict it</a> to trusted staff.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><a
 name="anarchist"></a><span style="text-decoration: underline;">"I
refuse to obey your </span><a style="text-decoration: underline;"
 href="http://lpmuds.net/intermud.html#rules">channel rules</a><span
 style="text-decoration: underline;">"</span><br>
<br>
</big><big style="font-family: courier new,courier,monospace;">You
should definitely block intermud then, or at<br>
least <a href="ds-admin-faq.html#35">restrict it</a> to responsible
staff.</big><br>
<big style="font-family: courier new,courier,monospace;"><br>
<br>
<span style="font-weight: bold; text-decoration: underline;"><a
 name="138"></a>I hate one of the sample domains and I want it GONE</span><br>
<br>
If you feel strongly about it, then by all means get rid<br>
of the domain that offends your sensibilities. Before<br>
you do, however, ask yourself if what you dislike is<br>
the domain itself and everything it stands for, or<br>
if the problem is that you just don't want it to be<br>
something your players see.<br>
<br>
The reason you should ask yourself this question is<br>
that even if you really don't care for one of (or all<br>
of) the sample domains, they really do serve the<br>
incredibly useful purpose of providing many, many<br>
good examples of how to do certain things in Dead Souls.<br>
Without working examples, you'll be reinventing the<br>
wheel anytime you want to do something you're <br>
unfamiliar with that isn't explicitly detailed in<br>
exisiting documentation.<br>
<br>
If you wipe the the Town domain, for example, and<br>
then want to set up a quest for advancement, you're <br>
going to have to figure it out by reading and <br>
understanding the mechanics of the quest lib object <br>
and level system...rather than just taking a quick <br>
look at Leo and Dirk for how they implement those <br>
mechanics. If you're ok with that, then fine, but don't<br>
be surprised if your request for help on the intermud<br>
goes something like:<br>
<br>
Newcomer@MyMud <span
 style="color: rgb(0, 204, 204); font-weight: bold;">&lt;dchat&gt;</span>
how do I get an npc to raise my level?<br>
Cratylus@Dead Souls <span
 style="color: rgb(0, 204, 204); font-weight: bold;">&lt;dchat&gt;</span>
take a look at dirk <br>
</big><big style="font-family: courier new,courier,monospace;">Newcomer@MyMud
<span style="color: rgb(0, 204, 204); font-weight: bold;">&lt;dchat&gt;</span>
nah, I deleted that domain, it sucks<br>
</big><big style="font-family: courier new,courier,monospace;">Cratylus@Dead
Souls <span style="color: rgb(0, 204, 204); font-weight: bold;">&lt;dchat&gt;</span>
download dead souls again and take a look at dirk<br>
<br>
(This chat was simulated. No newbies were harmed in <br>
the creation of that pretend log)<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
It's by far simpler and more convenient to <br>
<a href="http://dead-souls.net/ds-admin-faq.html#108">change the
default domain to something else</a>, rather<br>
than deleting stuff.<br>
<br>
But hey, the beauty part is, it's <span style="font-weight: bold;">your</span>
mud. I'm not<br>
the boss of you, so if obliterating that horrible<br>
awful set of bits is what you must do, then follow<br>
your vision, man.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="139"></a>How
do I make help files?</span><br>
<br>
Create a text file in the manner you normally do, then when<br>
you're done, put it somewhere in /doc/help that makes sense.<br>
for example, a help file about your new combat system might<br>
be called /doc/help/players/karate<br>
<br>
Once you've made the helpfile and put it where it goes, <br>
update the help daemon and you should be all set:<br>
<br>
<span style="font-weight: bold;">update /daemon/help<br>
<br>
<br>
</span></big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="140"></a>How
many players will DS handle simultaneously?<br>
</span><br style="text-decoration: underline;">
<span style="text-decoration: underline;">General answer</span>:<br>
As of Dead Souls 2.8.4, Dead Souls on a unix host<br>
running a modern OS on modern hardware can handle<br>
a couple hundred players with no software lag.<br>
<br>
<span style="text-decoration: underline;">Detailed answer</span>:<br>
I have run tests on Linux and Solaris, firing playerbots<br>
into a test mud. These bots walk around, pick fights,<br>
get stuff, drop stuff, examine things, etc. They are<br>
coded to be as unidle as an extremely busy player...<br>
typically with less than 2 seconds between commands,<br>
all the time.<br>
<br>
What I found is that with the default settings, a<br>
DS mud on a unix host with a 2.5GHz proc doesn't<br>
hit noticeable lag until you're roughly over 200<br>
<span style="font-style: italic;">very active</span> players. At around
250 V.A.P. you notice<br>
a little lag, which doesn't change much until about<br>
350 V.A.P., at which point you'll get occasional,<br>
definitely noticeable lag.<br>
<br>
It doesn't get into "bad lag" territory until around<br>
400 V.A.P. Above 500 you start getting into annoying<br>
lag territory, and above 600 or 700 it's "not fun".<br>
<br>
Note, however, that <span style="font-style: italic;">real</span>
players are rarely as intensely<br>
busy as these bots. If you factor in the fact that<br>
about half your players are idle about half the time,<br>
the figure for "maximum players with no lag" goes<br>
up pretty quickly. You can also optimize your mud<br>
for high connection loads by disabling some of the<br>
resource-intensive parsing defaults.<br>
<br>
So, in theory, a DS mud on unix running on cutting-edge <br>
hardware and with normal players that are idle about <br>
half the time and with performance optimized could probably<br>
handle some 400 or 500 players simultaneously with<br>
little to no noticeable software lag. I haven't<br>
tested this, though, since I can't afford cutting<br>
edge hardware.<br>
<br>
See the FAQ entry below for DS on Windows.<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="141"></a>I
heard that Dead Souls for Windows has limitations</span><br>
<br>
Yep. They're not on purpose though, and it isn't the<br>
fault of Bill Gates or whatever. Basically, when<br>
the driver DS uses was in its early development, <br>
Windows was not a great target for mud development.<br>
It wouldn't have been *crazy* to make a mud that<br>
ran on, say, Windows NT 3.51, but it would be such a<br>
small audience that that the focus was on a driver<br>
that ran well on unix. <br>
<br>
MudOS therefore has had for a very long time a<br>
major bias toward code that runs well on unix, and<br>
this has been so for well over a decade. FluffOS,<br>
derived from MudOS, shares this legacy.<br>
<br>
Nowadays, Windows systems are quite robust and<br>
perfectly capable of handling even enterprise-level<br>
server apps. Today is seems *weird* that it's so hard <br>
to find a mud server that runs natively on Windows.<br>
To me it seemed natural to try to spread the goodness<br>
that is Dead Souls by making it easy to run on Windows.<br>
You will now find in the standard Dead Souls download<br>
an executable for Windows...and it's actually *easier*<br>
to install and run DS on Windows now than on unix.<br>
Go figure.<br>
<br>
However, the executable is compiled from unix source<br>
that heavily favors the unix way of doing business,<br>
and this is sadly not always compatible with Windows.<br>
As a result, Dead Souls on Windows has the following<br>
limitations:<br>
<br>
* DS on Windows will not accept more than 64 simultaneous <br>
network connections, meaning you are limited in the number <br>
of players you can have logged on at once.<br>
<br>
* DS file operations are dramatically slower on Windows.<br>
This causes performance in general to be weaker in <br>
comparison to the unix version, and it is the reason<br>
that some file-intensive operations, such as file<br>
indexing, are disabled in the Windows version.<br>
<br>
* DS CPU time is measured in a way that Windows doesn't<br>
understand, meaning that operations that under unix DS would<br>
get cancelled for being too CPU-greedy are allowed to<br>
run indefinitely in Windows DS. This means it is trivial<br>
to "lock up" a DS Windows mud by accident, forcing you<br>
to kill the process and restart.<br>
<br>
There are probably a few other limitations, but these<br>
three illustrate why Dead Souls on Windows is meant to be <br>
used for testing, development, and evaluating, not for a <br>
production mud. Your production DS mud (aka mud that is open<br>
for players and has players logged on) should run on a <br>
normal unix/Linux host.<br>
<br>
Note that if you use Cygwin to compile your own Windows<br>
executable, you *might* get around some of this stuff...<br>
but I don't support Cygwin so I can't vouch for it.<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
</big><big style="font-family: courier new,courier,monospace;"><br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="142"></a>What
are the CPU/RAM/diskspace requirements for Dead Souls?</span><br>
<br>
I usually get this question because someone wants<br>
to get server hosting somewhere and they want to<br>
know which "service package" to subscribe to. <br>
Unfortunately, the answer depends on all sorts of<br>
things I can't know, such as the speed of the<br>
machine, how busy your mud will be, etc. Rather<br>
than try to answer the question, what I can do<br>
is simply tell you what my usage is.<br>
<br>
<span style="text-decoration: underline;">Dead Souls on Linux 3GHz,
uptime 2w, currently on 8 players:</span><br>
&nbsp; PID USER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PR&nbsp; NI&nbsp;
VIRT&nbsp; RES&nbsp; SHR S %CPU %MEM&nbsp;&nbsp;&nbsp; TIME+&nbsp;
COMMAND<br>
&nbsp; XXX XXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp; 0
11976&nbsp; 11m 1216 S&nbsp; 0.0&nbsp; 0.6 152:48.51 fluffos<br>
<br>
So a pretty idle DS mud takes little CPU and about<br>
11 megs ram, when it's mostly just a few people sitting<br>
around testing a few objects and chatting on intermud.<br>
<br>
Now for a heavy test/dev mud...<br>
<br style="text-decoration: underline;">
<span style="text-decoration: underline;">Dead Souls on Solaris 2.5GHz,
uptime 2d, currently on 130 players:</span><br>
&nbsp;&nbsp; PID USERNAME LWP PRI NICE&nbsp; SIZE&nbsp;&nbsp; RES
STATE&nbsp;&nbsp;&nbsp; TIME&nbsp;&nbsp;&nbsp; CPU COMMAND<br>
&nbsp;&nbsp; XXX XXX&nbsp;&nbsp;&nbsp; 1&nbsp; 59&nbsp;&nbsp;&nbsp;
0&nbsp;&nbsp; 30M&nbsp;&nbsp; 28M sleep&nbsp;&nbsp;&nbsp; 2:09&nbsp;
3.86% driver<br>
<br>
In this particular case I think the 30M is probably<br>
misleading. These 130 players do wander around and<br>
load rooms and stuff, and I've seen the usage go<br>
up past 50 megs after a while. Is 50 megs for 130<br>
players a lot? I don't know. How much ram is your<br>
browser using right now? <br>
<br>
The CPU percentage is also misleading, because "top"<br>
on multiproc machines tends to divide that percent by<br>
the number of cores, so in this case the CPU utilization<br>
is actually more like 7.7%. Is that a lot for 130 very<br>
active players? <span style="font-style: italic;">I</span> don't think
so, but that's up to you<br>
to decide.<br>
<br>
In any case, those are the two data points I can provide to<br>
you as a guide of how to shop for your hosting. If you<br>
find data that contradicts this, or is more useful, feel<br>
free to post it on <a href="http://lpmuds.net/forum/">the forum</a>.<br>
<br>
As for diskspace, the download package itself is about 6M,<br>
and uncompressed it is:<br>
<br>
$ du -ksh ds2.8.4<br>
28M&nbsp;&nbsp;&nbsp;&nbsp; ds2.8.4<br>
<br>
However, remember that an LP mud is all about files in<br>
LPC, which is plaintext and they'll take up a bunch of<br>
room as you go along. And also remember you'll be making<br>
backups, and possibly logging things, etc. <br>
<br>
My test mud takes up about 110M, and if you're going<br>
to be hiring coders and such, I'd strongly advise going<br>
above 200M. <br>
<br>
For just goofing around and testing, you could probably <br>
keep it under 100M, but you need to keep an eye on<br>
your usage.<br>
<br>
<span style="text-decoration: underline;">Summary</span>: Unless you
know for a fact you will immediately<br>
have hundreds of players, a low-tier plan will probably<br>
suit you to begin with. Just don't lock yourself in to<br>
a plan until you've had a chance to determine for yourself<br>
what your needs are.<br>
<br>
<br>
</big><big style="font-family: courier new,courier,monospace;"><span
 style="font-weight: bold; text-decoration: underline;"><a name="143"></a>Who's
awesome?</span><br>
<br>
I'm awesome.<br>
</big><big style="font-family: courier new,courier,monospace;"><br>
</big><br style="font-family: courier new,courier,monospace;">
<big style="font-family: courier new,courier,monospace;">-
Cratylus</big><br style="font-family: courier new,courier,monospace;">
<br style="font-family: courier new,courier,monospace;">
<a style="font-family: courier new,courier,monospace;"
 href="http://dead-souls.net/">Dead
Souls
Homepage</a><br style="font-family: courier new,courier,monospace;">
<br style="font-family: monospace;">
</body>
</html>
